【发布时间】:2020-06-03 06:16:17
【问题描述】:
我们正在使用 Solr 8.4.1 从文档中搜索产品。我希望确切的短语排在首位,但我也希望如果同一短语在文档中重复多次,那么它应该只计算一次。现在,那些在文档中多次使用相同短语的关键字排在首位,因为它们获得了更高的分数。
如果我正在搜索"pipes",请查看下面的结果。找到了 7 个结果,但名为 my pipes pipes 的 prod_id:297720 与 prod_id:3064 的得分不同。
根据我们的需要,两者应该具有相同的分数。我想忽略文档中的重复短语。
我们使用相似类<similarity class="solr.BM25SimilarityFactory"/>
搜索字段架构如下所示
<field name="product_related_kword" type="text_general" indexed="true" stored="true" />
结果是:
{
"responseHeader":{
"status":0,
"QTime":222,
"params":{
"q":"product_related_kword:pipes",
"fl":"product_name,score,product_related_kword,prod_id,member_classified_slno,member_id",
"start":"0",
"rows":"100",
"debugQuery":"on"}},
"response":{"numFound":7,"start":0,"maxScore":2.7593598,"docs":[
{
"prod_id":297720,
"product_name":"my pipes pipes",
"member_classified_slno":123457327,
"member_id":"11111327",
"product_related_kword":"my pipes pipes 00",
"score":2.7593598},
{
"prod_id":3064,
"product_name":"pipes",
"member_classified_slno":123457560,
"member_id":"11119579",
"product_related_kword":"pipes 00",
"score":2.5436506},
{
"prod_id":3064,
"product_name":"pipes",
"member_classified_slno":123457544,
"member_id":"11113186",
"product_related_kword":"pipes 00",
"score":2.5436506},
{
"prod_id":3064,
"product_name":"pipes",
"member_classified_slno":123457546,
"member_id":"11113636",
"product_related_kword":"pipes 00",
"score":2.5436506},
{
"prod_id":3064,
"product_name":"pipes",
"member_classified_slno":123457551,
"member_id":"11119238",
"product_related_kword":"pipes 00",
"score":2.5436506},
{
"prod_id":3064,
"product_name":"pipes",
"member_classified_slno":123457553,
"member_id":"785565531",
"product_related_kword":"pipes 00",
"score":2.5436506
}
]
},
【问题讨论】:
-
我不确定它在词组匹配中的表现如何,但您可以尝试使用the constant score operator 吗? Another option 是使用基于 BM25 的自定义相似度,但
tfalways 返回 1。
标签: solr