Поисковая система 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
}

0 ответов

Другие вопросы по тегам