Thinking_sphinx "начинается_ с" запросом - PullRequest
0 голосов
/ 19 мая 2011

Мне нужен запросinking_sphinx, чтобы получить значения «begin_with».означает, что если я задаю Student.search 'a', я хочу, чтобы все учащиеся, у которых есть имя, начинались с a.Я уже проиндексировал поле имени. Теперь, чтобы найти студента, я должен дать точное имя.

1 Ответ

1 голос
/ 20 мая 2011

Звучит так, как вы хотите поиск по шаблону . Либо добавьте это в файл config/sphinx.yml, либо создайте его, если у вас его еще нет:

development:
  enable_star: 1
  min_prefix_len: 1
# repeat for other environments

Или вы можете поместить его в определенный индекс - поскольку настройки инфикса / префикса значительно увеличивают размер ваших индексов:

define_index do
  # ...

  set_property :enable_star => 1
  set_property :min_prefix_len => 1
end

А затем запустите rake ts:rebuild, чтобы изменения были известны Sphinx и обработаны в индексах, а затем вы можете выполнить поиск следующим образом:

Student.search 'a*'
# or
Student.search :conditions => {:name => 'a*'}

И если вы используете min_infix_len вместо min_prefix_len, вы также можете сопоставить в словах - то есть поставить звезду с любой стороны:

Student.search '*a*'

Наконец - если вы всегда хотите, чтобы в ваших запросах были символы подстановки на каждом конце каждого термина, используйте :star => true в своих запросах:

Student.search 'a b c', :star => true
# is the same as
Student.search '*a* *b* *c*'

Надеюсь, это поможет вам получить результат, который вы ищете:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...