Я использую 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. В чем может быть причина?
Спасибо за вашу помощь!