2010-02-19 3 views
2

При поиске «Stack Overflow», сфинкс не появится результатов, которые соответствуют «Stackoverflow»Если кто-то использовал поисковую систему Sphinx раньше ... знаете ли вы, может ли он присоединиться к словам?

Это потому, что сфинкс индексы «Stackoverflow» как одно слово ... в то время как запрос состоит из двух слов.

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

ответ

1

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

(Stack Overflow) | stackoverflow 
+0

Где я могу поместить этот код? – TIMEX

+0

result_ids = cl.Query (q, index). Это то, что у меня есть до сих пор. – TIMEX

+0

Это не работает: cl.Query ((«talk radar») | «talkradar», index) – TIMEX

0

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

2

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