2016-10-23 10 views
1

У меня есть индекс sphinx для поиска пользователей по именам.Настроить сфинкс, чтобы ранжировать точное соответствие выше с включенной морфологией

Я использую морфологию soundex, чтобы показать более релевантные результаты для искателя случаев, который точно не знает, как заклинание названия. Рассмотрим следующую таблицу:

+----+--------------------+ 
| id |  name  | 
+----+--------------------+ 
| 1 | Maciej Makuszewski | 
| 2 | Dane Massey  | 
| 3 | Lionel Messi  | 
| 4 | Mr. No Matches  | 
+----+--------------------+ 

С Soundex включен сфинкс предлагает 1, 2, 3 строки в качестве соответствующего результата для запроса messi. В любом случае, я хотел бы показать точное соответствие в первую очередь. Я имею в виду, что если пользователь вводит messi, он хочет увидеть Лионеля Месси первым с большой вероятностью.

Моя проблема: я не знаю, как это сделать. Я пытался установить разные ранги, но ничего не дает.

Я также попытался добавить

index_exact_words = 1 

индексировать, но это ничего не дает.

Я использую API sphinx с узлом node.js sphinxapi, если это имеет значение.

Каков общий способ решения такой проблемы?

ответ

2

Вы хотите, index_exact_words, но следует также добавить expand_keywords

Это заставит сфинкс искать нечеткое (по морфологии) и точного слово (через index_exact_words) автоматически. Итак, точное совпадение, совпадение обоих, и ранжирование выше.

Можно сделать то же самое вручную путем поиска скажем

messi | =messi

(который похож на то, что expand_keywords делает внутренне)

+1

Он работает. Спасибо –

+0

@GlenSwift, пожалуйста, используйте это решение и разрешайте билет. (c) Личный мастер схваток Глена –

 Смежные вопросы

  • Нет связанных вопросов^_^