#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*'
Надеюсь, это поможет вам получить результат, который вы ищете 🙂