0

我在我们的设置中使用扩展 Dismax 查询解析器。我正在运行以下查询以获取与某家公司相关的文档

_query_:"{!edismax qf='company' q.op='OR'}(\"the procter  & gamble company\")"

对于我们的索引逻辑的一些问题,我们在这家公司中有多个空格,名称为宝洁公司

当我运行上面的查询时,它没有给出任何结果,因为 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": {}

我使用文件类型作为field company的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 解析器不要替换多个空格的任何建议?

4

0 回答 0