私はSolr 5.5を使用していますが、ここで解決策を見つけたいという問題があります。
以下の設定を使用して作成したフィールドがあります。
<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>
このフィールドには、「ジャスティン ビーバー」のような値を指定できます。
そして、私の期待は次のとおりです。
「The artist Justin Bieber is a teen heartthrob」というクエリの場合、このドキュメントと一致させたいと思います。また、「ビーバー ジャスティンという名前のアーティストはカナダ人です」や「ジャスティンという名前はとても一般的です」などのクエリでは、一致が見つからないはずです。
デフォルトの「/select」リクエスト ハンドラを使用すると、「Justin Bieber」というクエリを発行すると、完全に一致するにもかかわらず、一致が見つからないことがわかります。しかし、別のフィールドが '/select' RH のデフォルト フィールドとして設定されていたため、以下の curl を使用して別の 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"}}'
必要な RH が作成されましたが、クエリが必要なドキュメントと一致しませんでした。
この問題の解決策を教えてください。
以下は、クエリに対する応答の「デバッグ」セクションのスニペットです: "/exactName?q=exactName_noAlias_en_US:Justin%20Bieber&wt=json&indent=true&debug=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":{},
以下は、クエリに対する応答の「デバッグ」セクションのスニペットです。
"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":{},
以下は、/select RH を使用したフレーズ クエリに対する応答の「デバッグ」セクションのスニペットです。
"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 を使用したフレーズ クエリに対する応答の「デバッグ」セクションのスニペットです。
"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":{},