2012-02-13 4 views
1

EdgeNGramFilterFactoryを使用して名前フィールドのインデックスを作成しようとしています。私はのschema.xmlにSunspotでedgeNGramフィルタを使用する

<fieldType name="text_prefix" class="solr.TextField" omitNorms="false"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.ISOLatin1AccentFilterFactory"/> 
    <filter class="solr.TrimFilterFactory" /> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="20" side="front"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.ISOLatin1AccentFilterFactory"/> 
    <filter class="solr.TrimFilterFactory" /> 
    </analyzer> 
</fieldType> 

... 

<field name="text_prefix" stored="false" type="string" multiValued="true" indexed="true"/> 

を模倣しようとした私のモデルに私が持っている:

searchable do 
    text :name, :as => :text_prefix 

を、効果がないようですが。私は何かを欠いている?

+1

あなたは影響を与えないとはどういう意味ですかこのような

<field name="text_prefix" stored="false" type="string" multiValued="true" indexed="true"/> 

を変更する必要がありますか?あなたは何をチェックしていますか?あなたは何を求めているのですか? – Jayendra

+0

"Ne"を検索し、 "New York"のようなエントリを取得したい。現在は何も返しません。 – lulalala

答えて

3

あなたのスキーマは、一つのことを除いてよさそうだ:あなたのtext_prefixフィールドは、このように、それはEdgeNGramFilterFactoryを使用していない、タイプstringないtext_prefixです。

あなたはこのライン

<field name="text_prefix" stored="false" type="text_prefix" multiValued="true" indexed="true"/> 
+0

これは正しく動作します。しかし、ビルドイン ' lulalala

+0

@ lulalalaそれがうまく動作することを知ってうれしい。申し訳ありませんがあなたの質問を得る、あなたはそれを言い換えることができますか?通常、fieldTypeの文字列はトークン化されていません。それは単純な文字列です。 – javanna

+0

私は今それを得ることを心配しないでください。 Sunspotのデフォルトのフィールドタイプは「テキスト」ですが、実際は文字列である静的な「テキスト」タイプではなく、実際には**ダイナミックな**「テキスト」フィールドです。 – lulalala

関連する問題