私はSolr 5.5を使用していますが、私はここで解決策を見つけることを望んでいるという問題があります。solr shingleクエリに一致するトークン化されたフィールド
私は、以下の設定を使用して作成したフィールドを持っている:
<field name="exactName_noAlias_en_US" type="text_exact_query_tokenized" indexed="true" stored="false"/>
<fieldtype name="text_exact_query_tokenized" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="10"/>
</analyzer>
</fieldtype>
このフィールドは以下のように値を持つことができます:「ジャスティン・ビーバー」
そして、次のように私の期待は次のとおりです。
「Justin Bieberのアーティストは10代の恋人」という質問に対して、この文書と一致するようにしたいと思います。 「Bieber Justinというアーティストはカナダ人です」や「Justinという名前はとても一般的です」などの検索クエリは一致するものではありません。
デフォルトの '/ select'リクエストハンドラを使用すると、完全に一致していても「Justin Bieber」というクエリを発行したときに一致するものが見つかりません。しかし、別のフィールドは、RHを「/選択」のデフォルトのフィールドとして設定されているので、私はカールの下に使用して別のRHを作成しようとしました:
curl http://localhost/solr/performer/config -H 'Content-type:application/json' -d '{"add-requesthandler" : {"name": "/exactName","class":"solr.SearchHandler","defaults":{ "echoParams":"explicit" ,"rows":10, "df":"exactName_noAlias_en_US", "q.op":"AND" },"useParams":"x"}}'
それは私が望んでいたが、私のクエリはまだdidnのRHを作成しました必要な文書に一致する。
この問題の解決方法をお勧めします。以下は
Here is a screenshot from the Analysis screen.
クエリに対する応答の 'デバッグ' セクションの抜粋です: "/ exactName Q = exactName_noAlias_en_US:?ジャスティン%20Bieber &重量= JSON &インデント=真&デバッグ= true" を
"debug":{
"rawquerystring":"exactName_noAlias_en_US:Justin Bieber",
"querystring":"exactName_noAlias_en_US:Justin Bieber",
"parsedquery":"+exactName_noAlias_en_US:justin +exactName_noAlias_en_US:bieber",
"parsedquery_toString":"+exactName_noAlias_en_US:justin +exactName_noAlias_en_US:bieber",
"explain":{},
以下クエリに対する応答の 'デバッグ' セクションの抜粋です: "/選択Q = exactName_noAlias_en_US:?ジャスティン%20Bieber &重量= JSON &インデント=真&デバッグ= true" を
"debug":{
"rawquerystring":"exactName_noAlias_en_US:Justin Bieber",
"querystring":"exactName_noAlias_en_US:Justin Bieber",
"parsedquery":"+exactName_noAlias_en_US:justin +searchKeywords_en_US:bieber",
"parsedquery_toString":"+exactName_noAlias_en_US:justin +searchKeywords_en_US:bieber",
"explain":{},
そして、以下が選択RH /とフレーズのクエリに対する応答の 'デバッグ' セクションの抜粋です: "?/選択Q = exactName_noAlias_en_US:" ジャスティン%20Bieber」&重量= JSON &インデント=真&デバッグ=真
"debug":{
"rawquerystring":"exactName_noAlias_en_US:\"Justin Bieber\"",
"querystring":"exactName_noAlias_en_US:\"Justin Bieber\"",
"parsedquery":"MultiPhraseQuery(exactName_noAlias_en_US:\"(justin justin bieber) bieber\")",
"parsedquery_toString":"exactName_noAlias_en_US:\"(justin justin bieber) bieber\"",
"explain":{},
以下は/ exactName RHとフレーズのクエリに対する応答の 'デバッグ' セクションの抜粋です: "/ exactName Q = exactName_noAlias_en_US:?" ジャスティン%20Bieber」&重量= json & indent = true & debug = true以下は
"debug":{
"rawquerystring":"exactName_noAlias_en_US:\"Justin Bieber\"",
"querystring":"exactName_noAlias_en_US:\"Justin Bieber\"",
"parsedquery":"MultiPhraseQuery(exactName_noAlias_en_US:\"(justin justin bieber) bieber\")",
"parsedquery_toString":"exactName_noAlias_en_US:\"(justin justin bieber) bieber\"",
"explain":{},
エスケープクエリでクエリと空白文字を、対応するデバッグセクションです:
select?q=Justin\ Beiber&df=exactName_noAlias_en_US
デバッグ:
"rawquerystring":"Justin\\ Beiber",
"querystring":"Justin\\ Beiber",
"parsedquery":"+((exactName_noAlias_en_US:justin exactName_noAlias_en_US:justin beiber)/no_coord) +exactName_noAlias_en_US:beiber",
"parsedquery_toString":"+(exactName_noAlias_en_US:justin exactName_noAlias_en_US:justin beiber) +exactName_noAlias_en_US:beiber",
"explain":{},
[管理]ページの[分析]ページの出力を確認しましたか?そうすれば、インデックス付きのコンテンツとクエリの両方を入力して、どちらのトークンが生成され、どちらが同じであるかを確認することができます。既定のフィールドを提供するデバッグや、URLのクエリフィールドは通常、要求ハンドラの変更や追加より簡単です。 – MatsLindh
はい、しました。私はそのツールで欲しかったものを正確に見ています。しかし、上記の/ select RHまたはカスタムの '/ exactName'を使用してhttp経由でクエリを発行した場合、私は同じ動作をしません。 – oveflown
分析ステージからの出力を含めることができますか?また、アナライザのインデックス部分を変更するには、そのドキュメントを再インデックスする必要があります。 – MatsLindh