Запрос Thinking_sphinx «begins_with»

#ruby-on-rails #thinking-sphinx

#ruby-on-rails #мышление-сфинкс

Вопрос:

Мне нужен запрос thinking_sphinx для извлечения значений «begins_with». означает, что если я укажу Student.search ‘a’, я хочу отобразить всех студентов, у которых имя начинается с a. Я уже проиндексировал поле name.Теперь, чтобы получить ученика, я должен указать точное имя.

Ответ №1:

Похоже, вам нужен поиск по шаблону. Либо добавьте это в свой 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*'
  

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