キーワードトークン化ツール(全体の用語はトークン)を使用するフィールドタイプを持っています。小文字およびエッジ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>
私の目標は、したがって、正確なマッチングと用語の順序は重要であり、与えられた正確に何で始まり、当社の保存された用語から一致するフレーズを返す何かを持っていることです。
アイデア?
これはうまくいくはずです。結果が得られるはずです。あなたは特定のフィールドでテストできますか?フィールド名がedge_textでインデックスに登録されている場合、q = edge_text: "robert long"を試すことができます – Jayendra
ありがとう、Jayendra。私のフィールドは実際には "suggest2"と呼ばれ、私は '/ solr/select /?q = "rob + l"&qf = suggest2&fl = suggest2'のバリエーションを試しました。たぶん私は誤って私のクエリを作っている? – tedders
申し訳ありませんが、上記のクエリは、私が後で試していたものです。明らかに、「強盗」は一致しません。私は質問を単にq = suggest2に変更しました。あなたが提案したように「ロバート・ロング」と言いました。私はクエリでフィールドを指定する代わりにqfを使用しようとするのが問題だと思います。助けてくれてありがとう、私が受け入れる答えとして再投稿するなら、助けてくれてありがとう。 – tedders