solr:字符串字段使用qf参数不会产生部分匹配结果



我的经验与http://lucene.472066.n3.nabble.com/string-field-does-not-yield-exact-match-result-using-qf-parameter-td4060096.html

当我将"qf"添加到dismax查询时,除非完全匹配,否则不会得到任何结果。

我使用NGramFilterFactory如下:

 <fieldType name="text_edgengrams" class="solr.TextField">
   <analyzer type="index">
     <tokenizer class="solr.LowerCaseTokenizerFactory"/>
     <filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="15"/>
   </analyzer>
   <analyzer type="query">
     <tokenizer class="solr.LowerCaseTokenizerFactory"/>
   </analyzer>
 </fieldType>
 ...

 <field name="text_ngrams" type="text_edgengrams" indexed="true" stored="false" multiValued="true" />
 ...
 <field name="domain" type="string" indexed="true" stored="true"/>
 ...
 <copyField source="domain" dest="text_ngrams"/>

如果我有yengas.com的索引,我可以搜索yengas.com,但不能搜索yengas。然而,如果我放弃"qf",我可以搜索yengas。

示例搜索:

 $ curl "http://localhost:8282/solr/links/select?q=domain:yengas&wt=json&indent=on&fl=id,domain,score"
 => "response":{"numFound":0,"start":0,"docs":[]

 $ curl "http://localhost:8282/solr/links/select?q=domain:yengas.com&wt=json&indent=on&fl=id,domain,score"
 => "response":{"numFound":3,"start":0,"docs":[]
 $ curl "http://localhost:8282/solr/links/select?defType=dismax&q=yengas&qf=domain^4&pf=domain&ps=0&fl=id,domain,score"
 => "response":{"numFound":0,"start":0,"docs":[]

 $ curl "http://localhost:8282/solr/links/select?defType=dismax&q=yengas.com&pf=domain&ps=0&fl=id,domain,score"
 => "response":{"numFound":3,"start":0,"docs":[]

dismax和普通查询的部分匹配失败。

我会错过什么?

CopyField不会更改原始字段
"复制"字段也不会将"原始"分析应用于"复制"域。

文档@http://wiki.apache.org/solr/SchemaXml#Copy_Fields

复制是在流源级别完成的,并且没有任何副本馈送到另一个副本中。

将copyfield作为copyfield标记的源是不起作用的
复制字段源必须是一个实际字段,该字段具有一定的值并且不级联。

因此,Original和Copied字段将按照定义进行操作,在您的情况下,定义为String和ngrams。

相关内容

  • 没有找到相关文章