Rails 3.1環境でthink-sphinx 2.0.10を実行していて、インデックス作成と検索がうまく機能します。 私のユーザーモデルで検索しているときに、ユーザーの名前にワイルドカード検索を行いたいが、メールではなく、特定の検索文字列がユーザーの電子メールと完全に一致する場合にのみユーザーに返す必要がある。 私はいくつかの研究を行なったし、これはSphinxの考え方 - 特定のインデックスのみのワイルドカード検索
set_property :enable_star => true
set_property :min_infix_len => 1
でdefine_indexブロック内のワイルドカード検索を可能にし、これは
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
をワイルドカード検索をサポートしなければならないインデックスに:infixes => true
を追加することによって行うことができることが分かりました自動生成された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
はcorre宣言されていますctly私は推測する。
問題は、「.com」を検索しても、.com電子メールアドレスを持つすべてのユーザーが取得できることです。 その理由は何ですか?
ありがとうございました!
ありがとうございました! @とを含むデフォルトの文字セットを定義することができました。 config/sphinx.ymlの中にあり、すべては現在動作しています:) – alex