Search Solr-多个搜索词的相同搜索结果分数?

Search Solr-多个搜索词的相同搜索结果分数?,search,solr,lucene,edismax,Search,Solr,Lucene,Edismax,我想知道如何能得到不同的分数为多个词的搜索结果 solr中的某些结果具有相同的分数,即使查询中有多个术语,如下面的示例所示 我在Solr中有两个索引,每个索引包含:id、first\u name、last\u name 每个索引如下所示: <doc> <str name="id">1</str> <str name="last_name">fisher</str> <str name="name">j

我想知道如何能得到不同的分数为多个词的搜索结果

solr中的某些结果具有相同的分数,即使查询中有多个术语,如下面的示例所示

我在Solr中有两个索引,每个索引包含:id、first\u name、last\u name 每个索引如下所示:

<doc>
    <str name="id">1</str>
    <str name="last_name">fisher</str>
    <str name="name">john</str>
</doc>

<doc>
    <str name="id">2</str>
    <str name="last_name">darby</str>
    <str name="name">john</str>
</doc>

1.
费希尔
厕所
2.
达比
厕所
当我只询问“john”时,两个结果都会出现。那太完美了。 然而,当我询问“约翰·费舍尔”时,两个结果都出现了,但分数相同。 我想要的是基于搜索词相关性的不同分数

下面是以下查询的结果 *%2分


...
0.85029894
1.
费希尔
厕所
0.85029894
2.
达比
厕所

任何帮助都将不胜感激

您的最佳选择是了解和分析不同因素如何影响您的文档分数,Lucene提供了有用的功能
解释
,Solr利用此功能提供如何计算分数您可以在Solr中使用“debugQuery”来查看其推导过程

?q=john&fl=score,*&rows=2&debugQuery=on
前答复:


厕所
厕所
+析取MaxQuery((文本:john))
+(正文:约翰)
2.1536596=(匹配)现场重量(文本:36722中的john),产品:
1.0=tf(termFreq(文本:john)=1)
8.614638=idf(docFreq=7591,maxDocs=15393998)
0.25=字段规范(字段=文本,文档=36722)
2.1536596=(匹配)现场重量(文本:36724中的john),产品:
1.0=tf(termFreq(文本:john)=1)
8.614638=idf(docFreq=7591,maxDocs=15393998)
0.25=字段规范(字段=文本,文档=36724)
除此之外,您还可以使用
explainOther
查找特定文档与查询不匹配的原因

?q=john&fl=score,*&rows=2&debugQuery=on&explainOther=on
请阅读:


您的最佳选择是了解和分析不同因素如何影响您的文档分数,Lucene提供了有用的功能
解释
,Solr利用此功能提供如何计算分数您可以在Solr中使用“debugQuery”来查看它是如何得出的

?q=john&fl=score,*&rows=2&debugQuery=on
前答复:


厕所
厕所
+析取MaxQuery((文本:john))
+(正文:约翰)
2.1536596=(匹配)现场重量(文本:36722中的john),产品:
1.0=tf(termFreq(文本:john)=1)
8.614638=idf(docFreq=7591,maxDocs=15393998)
0.25=字段规范(字段=文本,文档=36722)
2.1536596=(匹配)现场重量(文本:36724中的john),产品:
1.0=tf(termFreq(文本:john)=1)
8.614638=idf(docFreq=7591,maxDocs=15393998)
0.25=字段规范(字段=文本,文档=36724)
除此之外,您还可以使用
explainOther
查找特定文档与查询不匹配的原因

?q=john&fl=score,*&rows=2&debugQuery=on&explainOther=on
请阅读:


在我看来,您只是在“名称”字段上搜索。这就是为什么分数是一样的。如果您使用,您可以轻松搜索这两个字段,最相关的将有更高的分数

e、 g

edismax
姓

另一种方法是使用copyField将两个字段合并为一个字段,并且只在新创建的字段中搜索。

我认为您只在“name”字段中搜索。这就是为什么分数是一样的。如果您使用,您可以轻松搜索这两个字段,最相关的将有更高的分数

e、 g

edismax
姓

另一种方法是使用copyField将2个字段合并为1个字段,并且只在新创建的字段中搜索。

感谢快速回复人员,我对此表示感谢

从explain查询中,我能够确定搜索实际上只在一个字段上执行

我发现可以在同一个字段中添加多个字段进行搜索。 在schema.xml中,我添加了以下内容:

<copyField source="last_name" dest="text"/>


现在,当使用多个搜索词时,结果会如预期的那样出现。

谢谢大家的快速回复,我对此表示感谢

从explain查询中,我能够确定搜索实际上只在一个字段上执行

我发现可以在同一个字段中添加多个字段进行搜索。 在schema.xml中,我添加了以下内容:

<copyField source="last_name" dest="text"/>

现在,当使用多个搜索词时,结果将按预期显示。

是否签出:是否签出: