2016-12-01 3 views
0

でカスタムShingleFilter私の要件は以下のようにトークンを生成することができ、トークンフィルタを持つことである -Solrの

テキスト - 「クイック茶色のキツネジャンプ」
トークン:
「クイック」
私はを使用する場合は、「クイック茶色のキツネ」
「クイック茶色のキツネジャンプ」


「ブラウンクイック」 0、私は余分なトークンを得る - "brown fox" "fox jump" 私はしたくないです。それを達成するための準備が整った方法がありますか?すべてのヘルプは非常に基本的にあなたがこのFilterFactoryは接頭サブストリングをマッチングに非常に有用であるEdgeNGramFilterFactor

を試してみてください 、前方一致検索をしたい

答えて

0

をいただければ幸いです。

<fieldType name="text_general_edge_ngram" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.LowerCaseTokenizerFactory"/> 
     <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.LowerCaseTokenizerFactory"/> 
    </analyzer> 
</fieldType> 

注:場合に最小トークン長さが2になると最大トークン長は15になり、その後2、次いで以下と大きい長さを有する任意のトークン15になるようminGramとmaxGramは、トークンの長さを決定します捨てられた。

"a"という文字列がある場合、トークン化されません。なぜなら、トークンの長さは2より小さくなり、同じ長さはmaxlengthになります。あなたの必要に応じて調整してください。

また、EdgeNgramを使用すると、インデックスサイズが大きくなります(同じ文字列に対してより多くのトークンが生成されるようになりました)。それも考慮に入れてください。