我有基于他们已撰写的文本文档的人员索引。这是字段类型:计算Solr中多值文本字段的完整匹配
<fieldtype name="TField" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.StopFilterFactory" />
<filter class="solr.PorterStemFilterFactory" />
<filter class="solr.PositionFilterFactory" />
</analyzer>
</fieldtype>
而且字段声明本身:
<field name="Publication" type="TField" indexed="true" stored="true" multiValued="true" />
和请求处理程序配置:
<requestHandler name="/select/" class="solr.StandardRequestHandler" default="true" >
<lst name="defaults" >
<str name="defType">edismax</str>
<str name="qf">Publication</str>
<str name="fl">ID,score</str>
<str name="q.alt">*:*</str>
<str name="rows">10</str>
</lst>
</requestHandler>
理想的情况是处理文本查询和返回人们对文本查询匹配的出版物数量进行评分。例如:
某甲与内容“猫狗鼠”,“猫狗之家”,“香蕉”
某乙有内容“猫狗鼠”,“猫”三个文件三个文件, “狗”
人C有内容“猫”,“狗”,“香蕉”
如果文本查询是“猫狗”两个文件,我想人一个是顶部比分2 (匹配“猫狗老鼠”,“猫狗屋”),与得分1(匹配“猫狗老鼠”)和Person C完全不归还的人B。
我目前的实现无法在两个方面做到这一点。首先,它返回Person C,因为Solr似乎将multiValued字段的内容合并为一个,所以猫和狗出现在单独的A出版物条目中似乎并不重要。
其次,与第一个强烈相关的是,基于发布字段中所有值串联的内容,TF-IDF的评分是TF-IDF。因此,人A和B最终得分相同,因为猫和狗在其整个文档语料库中出现相同次数。
有什么方法可以实现我在找的东西吗?更一般地说,有没有办法根据匹配multiValued字段的单个条目对文档进行评分,而不是将所有条目作为一个整体进行评分?