Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Подскажите с sphinx
Форумы портала PHP.SU » Разное » Прочее » Подскажите с sphinx

Страниц (1): [1]
 

1. vanicon - 20 Июля, 2013 - 10:33:24 - перейти к сообщению
Всем привет.
Понадобилось реализовать полнотекстовый поиск, и решил попробовать sphinx.
Но возникли проблемы с удалением документов в индексе.
Как я понял такового удаления из индекса в sphinx вообще нет, и место этого нужно обновлять поле флаг в документе и фильтровать по нему исключая из результатов поиска.
Но эти ненужные документы так и останутся в индексе что меня не устраивает, прочитал про main + delta и подумал то что нужно, так как документов со временем может быть много, и разумно будет сделать 2 индекса, delta - документы за день, main - все документы, и объединять их через сутки например, и производить обновления уже в delta индексе, но при объединение не нужно что бы в основной индекс попали документы помеченные как удаленные.
Пытался сделать это вот этой командой:
indexer --merge main delta --merge-dst-range deleted 0 0
но в основной индекс все ровно попадают удаленные документы, но уже с флагом 0 (типа не удален)
Но все ровно если документа уже не будет в delta то нужно его удалить с main, и вот тут я даже не знаю как это бы сделать...
Читал про kill list, если сделать его на delta то это только не даст в результаты поиска уделенные документы, но сами документы же будут так и находиться в main индексе.
Думаю кто использовал sphinx не составит труда помочь мне с удалением.
2. EuGen - 20 Июля, 2013 - 13:10:15 - перейти к сообщению
vanicon
Создать VIEW, в которую будут попадать только активные документы ("удалён"=0) и индексировать по этому VIEW. Тогда задача решается автоматически.
3. vanicon - 20 Июля, 2013 - 14:08:22 - перейти к сообщению
EuGen
Не понял вас, можно по подробнее?
4. EuGen - 20 Июля, 2013 - 15:10:11 - перейти к сообщению
vanicon
Создать в БД VIEW (представление) как выборку тех материалов, которые нужно индексировать, добавив условие активности ("удалён"=0) в выборку. Индексировать в sphinx это VIEW (и только его, ничего более не индексировать) и получить результат.

 

Powered by ExBB FM 1.0 RC1