我在设置中使用Extended Dismax Query解析器。我正在运行以下查询以获取与某个公司相关的文档
_query_:"{!edismax qf='company' q.op='OR'}(\"the procter & gamble company\")"
对于我们的索引逻辑的某些问题,我们在此公司名称中有多个空格 the procter&赌博公司
当我运行上面的查询时,它没有给出任何结果,因为edismax解析器正在用单个空格替换多个空格。以下是调试输出的片段
"rawquerystring": "_query_:\"{!edismax qf='company' q.op='OR'}(\\\"the procter & gamble company\\\")\"",
"querystring": "_query_:\"{!edismax qf='company' q.op='OR'}(\\\"the procter & gamble company\\\")\"",
"parsedquery": "(+DisjunctionMaxQuery((company:the procter & gamble company)))/no_coord",
"parsedquery_toString": "+(company:the procter & gamble company)",
"QParser": "LuceneQParser",
"explain": {}
我对字段公司使用filetype作为 lower_string 。以下是分析仪的定义。
<fieldType name="lower_string" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
有关如何告诉edisMax解析器不要替换多个空格的任何建议?