Поисковая система Sphinx возвращает результаты, разделяя слова
Я использую поисковую систему Sphinx, которая работает практически идеально. Хотя у меня есть одна проблема. Иногда Сфинкс возвращает мне неправильный фрагмент сборки. Например, когда у меня есть образец документа с текстом:
This is a test for Sphinx snippet building
И искать:
Sphinx snippet
Это может вернуть меня:
This is a test for<b>Sphinx</b> <b>snippet</b> building ...
Примечание. Это всего лишь пример, демонстрирующий мою проблему. Это всегда происходит в одном и том же слове. Например, если бы я искал for Sphinx
, это может вернуть мне правильный фрагмент, как пример:
This is a test <b>for</b> <b>Sphinx</b> snippet building ...
Почему Сфинкс иногда связывает слово перед ударом с самим ударом?
Дополнительная информация: слова, которые я использую в Сфинксе, фактически зашифрованы. Поэтому Sphinx вернет мне фрагмент с зашифрованными словами, хотя это не должно повлиять на производительность, верно? Например, Сфинкс может вернуть мне фрагмент кода:
ababbeDAge uueoq uaaae uueiad <b>iieuqppeo</b> <b>IeiqyqydDk</b> iieoqpDKDkq Biield
Который представляет: This is a test <b>for</b> <b>Sphinx</b> snippet building
когда я расшифрую фрагмент.
Итак, могут ли зашифрованные слова влиять на Сфинкс, соединяющий слово с ударом?
Изменить: Вот два фрагмента из Сфинкса, один правильный, а другой неправильный.
... u9a4Jp<b>55byddQEQUA</b> udCuJ5W7EwEQUAEQUA
... u9a4Jp6tFoOwgf<b>55byddQEQUA</b> udCuJ5W7EwEQUAEQUA
Как видите, иногда слово: u9a4Jp6tFoOwgf
усекается, в данном конкретном случае: u9a4Jp
, Зачем? Важно отметить, что оба связаны с найденным попаданием Сфинкса и что они приходят из двух разных документов... Я не могу понять, почему это происходит..
Я уже подтвердил, что в документах фраза идентична.
РЕДАКТИРОВАТЬ Пример запроса, который я использую в отношении SNIPPETS
-звонок показан под:
SELECT SNIPPET(Content, 'exact_phrase=1', 'query_mode=1', 'limit=0', 'limit_words=45', 'around=4') FROM RTIndex WHERE MATCH ....
Индекс настроен как:
index RTIndex
{
type = rt
path = /mnt/data/RTIndex
rt_field = Content
rt_attr_string = Content #for snippet
rt_mem_limit = 128M
}
searchd
{
listen = 9306:mysql41
log = /var/log/sphinxsearch/searchd.log
read_timeout = 5
max_children = 30
pid_file = /var/run/searchd.pid
max_packet_size = 128M
binlog_path = /mnt/data
}