1

我的架构中有一些字段如下:

hotel_name:一些酒店名称

城市:某个城市

县代码:DE

街道:某条街道。

我查找一些酒店的查询看起来像这样。

select/fq=city:"Berlin"&fq=country_code"DE"&fq=hotel_name:"achat berlin hotel"=city:"Berlin"&fq=country_code"DE"&fq=hotel_name:"achat berlin hotel"

返回值,包含许多在hotel_name 字段中找到的带有一些或多个令牌的酒店。如果我想简短,这些文档每个在hotel_name 文件中匹配的令牌数,我该怎么做。我想在顶部的 hotel_name 字段中保留最大数量的匹配令牌。

EG 如果酒店名称包含所有三个标记:achat、柏林和酒店,它应该出现在顶部。和较低的匹配应该出现在下面。

是否可以根据每个字段匹配的令牌数量对文档进行评分。

4

2 回答 2

2

好吧,首先,您的查询格式不正确。查询需要以a开头?,提供q参数,:在字段名和值之间提供a country_code,不需要重复fq参数。它应该是:

?q=*:*&fq=city:"Berlin"&fq=country_code:"DE"&fq=hotel_name:"achat berlin hotel"

,和这些参数将根据您进行标记和分析,hotel_name并且可能完全匹配或不匹配,具体取决于您在 中指定的查询斜率。country_codecityfqschema.xmlsolrconfig.xml

是否可以根据每个字段匹配的令牌数量对文档进行评分。

solr 中的得分不是这个字面意思,所以不,不完全是。

EG 如果酒店名称包含所有三个标记:achat、柏林和酒店,它应该出现在顶部。和较低的匹配应该出现在下面。

您已将查询作为短语提供(用"s 引用),因此 solr 默认会找到该确切短语,并为其提供相关分数。如果在您的 中配置了查询 slop(参数) ,那么还将添加来自草率查询的分数。您可能真正想要的是:qssolrconfig.xml

hotel_name:achat berlin hotel

这是一个非短语查询。

于 2012-06-08T13:46:00.630 回答
0

schema.xml 中“hotel_name”字段的类型是什么?

另外,你已经试过了吗?默认情况下,Solr 会考虑协调因素:

“如果查询中有多个词条,匹配的词条越多,得分越高”。所以,我猜你的情况已经发生了。

于 2012-06-08T13:39:15.327 回答