solr得分过滤查询

时间:2012-06-08 13:31:00

标签: solr

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

hotel_name:一些酒店名称

城市:某个城市

county_code: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字段中保留最大匹配令牌数。

E.G。如果酒店名称共有三个代币:achat,berlin和hotel,它应该出现在顶部。下面的匹配应该出现在下面。

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

2 个答案:

答案 0 :(得分:2)

好吧,首先,您的查询形成不良。您需要使用?启动查询,提供q参数,在:字段名称和值之间提供country_code,而您不需要重复fq个参数。它应该是:

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

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

  

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

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

  

E.G。如果酒店名称共有三个代币:achat,berlin和hotel,   它应该出现在顶部。下面的匹配应该出现在下面。

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

hotel_name:achat berlin hotel

这是一个非短语查询。

答案 1 :(得分:0)

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

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

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