2016-05-24 18 views
0

を動作しない:のSolr - KeywordTokenizerFactory - 複数の単語と完全に一致するが、私はSolrの中に次の型の定義を行った

<fieldType name="text_phrase" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    </analyzer>  
</fieldType> 

それがそのままインデックス値(なしトークン化)する必要があります。

「スキニージーンズ」の値をインデックスに追加します。

私は、次の検索クエリを(URLは読書のためにデコード)を実行すると、私が得る全く結果がありません

http://myvm:8983/solr/mycore/select?q=*:*&fq=name:("skinny jeans")&wt=json&indent=true&debugQuery=true 

あなたはURLはすべてのために検索して見ることができます(*:*)フィルタクエリのためにと正確な値 "スキニージーンズ"。

私はその後、私のインデックスに「ジーンズ」の値を追加し、

&fq=name:("jeans") 

と同様のクエリを実行すると、私は、「ジーンズ」の要素を見つける行う


したがって、1つの単語では動作しますが、複数の単語では動作しません。これはなぜでしょうか?私は結局、正確な値を探しています。 KeywordTokenizerFactoryが何か奇妙なことをしていると思われます。誰もそのような基本的な設定から結果が返されない理由をアドバイスできますか?あなたはそのまま言葉を続ける索引付けのためKeywordTokenizerFactoryを使用しているためです

おかげで、

答えて

1

。トークン化を適用しないか、またはトークンを作成しません。しかし、あなたに問い合せている間は、空白のためのトークンを作成するWhitespaceTokenizerFactoryを使用しています。

したがってKeywordTokenizerFactoryは、"skinny jeans"のようなトークンをインデックス内に単一のトークンとして持つでしょう。

WhitespaceTokenizerFactoryは、"skinny", "jeans"のようなトークンを作成します。

違いを見ることができますが、一致しません。 "skinny jeans"に対して"skinny", "jeans"を検索しています。

インデックストークナイザまたはクエリトークナイザを変更する必要があります。

あなたが完全に一致する先に行くしたい場合は索引付けおよび問合せは

<fieldType name="text_phrase" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    </analyzer>  
</fieldType> 

以下のようにしながらあなたが照会しながらインデックスとトークンが作成中に作成されたトークンを確認することができますトークナイザのように両方のためのKeywordTokenizerFactoryを保ちますソル分析ツールを使用して

+0

ああ私の質問では、「スキニージーンズ」というフレーズを二重引用符で括っても、実際にはフレーズとしてではなく個々のトークンとして照会されると言っていますか? – mils

+0

はい... tokesがそのように作成されていないため.... –

+0

WhitespaceTokenizerFactoryとShingleFilterFactoryをクエリ側で使用した場合、私は後になって同様の結果を得ることができますか? – mils

関連する問題