Если кто-нибудь раньше использовал поисковую систему Sphinx, знаете ли вы, может ли она соединять слова?

При поиске «Переполнение стека» Sphinx не выводит результаты, соответствующие «Переполнение стека».

Это потому, что Sphinx индексирует "Stackoverflow" как одно слово... тогда как запрос состоит из двух слов.

Кто-нибудь знает, как это исправить? (например, Google... они могут присоединиться к запросу!)


person TIMEX    schedule 19.02.2010    source источник


Ответы (3)


Нет необходимости вмешиваться в данные, поступающие в Sphinx. Все, что вам нужно сделать, это немного изменить поисковый запрос к Sphinx в вашем коде обработки формы, чтобы он содержал различные комбинации условий поиска и использовать режим соответствия SPH_MATCH_EXTENDED. В частности, для вашего примера

(Stack Overflow) | stackoverflow
person codeholic    schedule 19.02.2010
comment
result_ids = cl.Query(q, index). Это то, что у меня есть до сих пор. - person TIMEX; 20.02.2010
comment
Это не работает: cl.Query ((talkradar) | talkradar, index) - person TIMEX; 20.02.2010
comment
Вы должны поместить это в кавычки. Например: cl.Query ( (talk Radar) | Talkradar, index ) - person codeholic; 20.02.2010
comment
О, я понимаю, что вы имеете в виду. Просто изменить его в запросе? Итак, если запрос был переполнен стеком... измените эту строку, чтобы выполнить оператор ИЛИ... правильно? я использую python кстати - person TIMEX; 20.02.2010

Вы можете использовать функцию словоформы для сопоставления слов с разные слова или сопоставить несколько слов с одним словом. Если у вас есть много слов, которые вы хотите исправить, вы можете сделать это. Я думаю, что если бы вы использовали эту функцию, вам нужно было бы выполнить только один поиск, и это, вероятно, было бы быстрее, чем поиск «или».

person Kibbee    schedule 20.02.2010

Не могли бы вы просто объединить условия поиска в одно слово, прежде чем отправлять их в sphinx? Вам нужно будет сделать все перестановки поисковых терминов, то есть my search term как mysearch, mysearchterm и searchterm, но похоже, что это сработает.

person Byron Whitlock    schedule 19.02.2010