Я запускаю think-sphinx 2.0.10 в своей среде Rails 3.1, и индексация и поиск работают очень хорошо. Когда я ищу в своей модели User, я хочу выполнить поиск с подстановочными знаками по имени пользователя, но не по электронной почте, поэтому пользователь должен возвращаться только в том случае, если данная строка поиска точно соответствует электронной почте пользователя. Я провел небольшое исследование и обнаружил, что это можно сделать, включив поиск по шаблонам в блоке define_index с помощью
set_property :enable_star => true
set_property :min_infix_len => 1
и добавление :infixes => true
в индексы, которые должны поддерживать поиск по шаблонам
define_index do
indexes "CONCAT(first_name, ' ', last_name)", :as => :user_name, :infixes => true
indexes email
has :id, :as => :user_id
set_property :enable_star => true
set_property :min_infix_len => 1
end
Это из автоматически созданного файла development.sphinx.conf.
index user_core
{
source = user_core_0
path = /../../../../db/sphinx/development/user_core
charset_type = utf-8
min_infix_len = 1
infix_fields = user_name
enable_star = 1
}
Думаю, infix_fields
объявлены правильно.
Проблема в том, что если я ищу ".com", я все равно получаю всех пользователей с адресом электронной почты .com. В чем может быть причина этого?
Спасибо за вашу помощь!