2012-02-23 11 views
3

キーワードトークン化ツール(全体の用語はトークン)を使用するフィールドタイプを持っています。小文字およびエッジn-gramフィルタを使用しています。 "Robert Longo"は "r"、 "ro"、...、 "robert l"、 "robert lo"などのように保存されています。正確なフレーズはn-gramと一致しますが、結果は見つかりませんでしたか?

しかし、 "robert long"(引用符付き)を検索すると、トークンと完全に一致していても結果は得られません。私が引用符なしで検索するとき、私の用語は事前にトークン化され、それは "ロバート"だけでなく、すべての "ロバート"とすべての "l"と一致します。私はワイルドカードを何とか指定して、それ以上のことがあることを伝える必要がありますか?スキーマから

<fieldType name="edge_text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" /> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

私の目標は、したがって、正確なマッチングと用語の順序は重要であり、与えられた正確に何で始まり、当社の保存された用語から一致するフレーズを返す何かを持っていることです。

アイデア?

+1

これはうまくいくはずです。結果が得られるはずです。あなたは特定のフィールドでテストできますか?フィールド名がedge_textでインデックスに登録されている場合、q = edge_text: "robert long"を試すことができます – Jayendra

+0

ありがとう、Jayendra。私のフィールドは実際には "suggest2"と呼ばれ、私は '/ solr/select /?q = "rob + l"&qf = suggest2&fl = suggest2'のバリエーションを試しました。たぶん私は誤って私のクエリを作っている? – tedders

+0

申し訳ありませんが、上記のクエリは、私が後で試していたものです。明らかに、「強盗」は一致しません。私は質問を単にq = suggest2に変更しました。あなたが提案したように「ロバート・ロング」と言いました。私はクエリでフィールドを指定する代わりにqfを使用しようとするのが問題だと思います。助けてくれてありがとう、私が受け入れる答えとして再投稿するなら、助けてくれてありがとう。 – tedders

答えて

1

正常に動作するはずですが、結果を得ることができます。
特定のフィールドでテストできますか?フィールド名がedge_textでインデックスに登録されていれば試すことができますq=edge_text:"robert long"

関連する問題