Я использую 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>
Это поле может иметь значение, например: «Джастин Бибер».
И мое ожидание следующее:
Для запроса «Художник Джастин Бибер — подросток-сердцеед» я бы хотел, чтобы он соответствовал этому документу. И такие запросы, как «Художник по имени Бибер Джастин — канадец» или «Имя Джастин так распространено», не должны находить соответствия.
Я вижу, что использование обработчика запросов по умолчанию «/ select» не находит совпадения, когда я выдаю запрос «Джастин Бибер», даже если это точное совпадение. Но в качестве поля по умолчанию для RH '/ select' было установлено другое поле, поэтому я попытался создать еще один 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":{},
А ниже приведен фрагмент раздела «отладка» ответа на запрос: «/select?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 +searchKeywords_en_US:bieber",
"parsedquery_toString":"+exactName_noAlias_en_US:justin +searchKeywords_en_US:bieber",
"explain":{},
А ниже приведен фрагмент раздела «отладка» ответа на фразовый запрос с /select RH: «/select?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":"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:"Justin%20Bieber"&wt=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":{},