2012-06-01 84 views
4

我正在查询solr服务器的位置。这些位置文件还有一个包含US,GB,DE等值的字段“country_code”...Solr根据字段值提升结果

在某些情况下,我想通过特定的国家代码提高结果,以便能够按国家/地区排列我的结果的优先级。

例如:

?q=york 

比方说,用户是从英国和正在搜索纽约......此刻他发现一些约克斯首先在美国,然后是一个在英国。

我希望能够指定这个查询英国的结果应该是最重要的。我发现,这应该通过dismax和BQ,这样的事情是可能的:

?q=york&dismax=true&bq=country_code:GB^20.0 

但符合市场预期,纽约现在从危地马拉(COUNTRY_CODE GT)在顶部,在GB的有没有不工作可见。

请帮助;-)

+0

您能否在查询中包含相关性结果? – ajreal

+0

你是指结果的分数?没有dismax美国的结果有1.7357568的得分,GB有1.7085013。随着dismax约克在危地马拉有2.067986和加拿大的第二个结果有2.067986 – Cornelius

回答

5

好吧,我做了什么与dismax在我的问题是工作,我不得不提升值的方式太低。将它从20改为20000,它工作得很好。

+0

谢谢!这对我来说已经适用了我多年挠头了!在文档中,我只能看到使用的值很低。 –

6

dismax的bq参数是累加性的,这意味着它增加了最终得分。在新的edismax解析器中有一个提升参数,它将提升函数值与最终得分相乘,即edismax boost