Расставьте приоритеты полей, которые начинаются с поискового запроса, используя Sphinx (Thinking Sphinx) - или другую систему полнотекстового поиска. - PullRequest
1 голос
/ 22 декабря 2009

Я использую sphinx и мышление sphinx для поиска в базе данных клиентов. Метаданные клиентов (электронные письма, телефоны и т. Д.) Распределены по нескольким таблицам, и sphinx индексирует все заметки о клиентах и ​​т. Д. И т. Д. Проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы текстовые поля, начинающиеся с поискового запроса, отображались первыми в поиске. то есть поиск по запросу "hods" должен возвращать результаты в следующем порядке:

  • HODS
  • Ходс
  • Ходсон
  • Методы

, что означает приоритет (примерно в этом порядке):

  • начало фразы
  • Полные слова
  • начало слова

Я пытался добиться этого с помощью сложного поискового запроса (например, «^ hods | hods | hods * | * hods»).

Что-то подобное может гарантировать, что я найду все подходящие результаты - но, похоже, не влияет на их ранжирование !! Я не могу найти ничего полезного в документации !!

Есть идеи? Возможно ли это со Сфинксом? Любые другие поисковые решения, где это возможно?

Ответы [ 3 ]

1 голос
/ 22 июля 2010

Sphinx 1.10 представляет новый режим ранжирования : SPH_RANK_SPH04.

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

0 голосов
/ 14 января 2011
(e.g. "^hods | hods | hods* | *hods")

этот запрос не имеет приоритета для результатов. Приведенный выше запрос только решает, что выбрать.

Если вам нужно расставить приоритеты, вы должны использовать режимы ранжирования ... или, возможно, режимы сортировки.

0 голосов
/ 22 декабря 2009

Я никогда не использовал ThinkingSphinx, но я поддерживаю условия запроса все время в Lucene / Solr. В большинстве инструментов поиска должен быть похожий механизм.

...