在 Solr 3.6.2 的架构中,有两个field
声明,text
和exact
<field name="text" type="text" indexed="true" stored="true" />
<field name="exact" type="string" indexed="true" stored="true" />
前者使用StandardTokenizer
,后者使用KeywordTokenizer
。
描述问题的Solr查询:
?hl=true
&hl.fl=text,exact
&defType=edismax
&qf=text+exact <-------- here
&q=a-b
突出显示字段完全 的输出:
<em>a</em>-<em>b</em>
。
问题是字段exact
的摘要是使用text
中的分析器生成的。
?hl=true
&hl.fl=text,exact
&defType=edismax
&qf=exact <-------- here
&q=a-b
突出显示字段完全 的输出:
<em>a-b</em>
。
只需从text
中删除qf
,我们就会得到正确的分析器,为什么?
答案 0 :(得分:0)
使用debugQuery
+DisjunctionMaxQuery(((exact:a-b) | ((text:a text:b)~2)))
在exact
中找到匹配后的Solr荧光笔似乎也只根据查询中的状态匹配a
和b
。 hl.requireFieldMatch=true
似乎确实打击了这个!