2017-05-11 50 views
0

我试图将Solr搜索结果放在结果集顶部的特定字段(此处为resourcename)中,其中包含我的搜索短语如何提高在字段中包含搜索关键字的结果

我是Solr的初学者。我寻觅了好一阵子网页,发现一些相关的问题,比如:

Use function query for boosting score in Solr

SolrNet queries with boost functions

然后,我开始尝试自己有这样的疑问:

https://localhost:8898/solr/collection1/select?defType=edismax&fl=resourcename&indent=on&q=resourcename:"test"*^200,%20content:"test"*^1&qf=resourcename^200%20content^2&rows=1000&wt=json 
https://localhost:8898/solr/collection1/select?bf=if(exists(resourcename),100,1)&defType=edismax&fl=resourcename&indent=on&q=resourcename:"test"*^200,%20content:"test"*^1&rows=1000&wt=json 
https://localhost:8898/solr/collection1/select?bf=if(exists(resourcename),100,1)&defType=edismax&fl=resourcename&indent=on&q=*:"test"*&rows=1000&wt=json 
https://localhost:8898/solr/collection1/select?defType=edismax&fl=resourcename&indent=on&q=*:"test"*&qf=resourcename^200%20content^2&rows=1000&wt=json 

但是,无论我尝试什么,我都会得到结果,其中包含test这个词在resourcename中,而不仅仅是结果的顶部。

任何想法,我可能会失踪或做错?

回答

1

有很多语法错误,我建议查看solr wiki以查询解析器[1]。

作为建议,请始终查看已解析的查询并探索搜索结果的调试功能。

为了让你问我会用下面的请求参数(从维基报价)的行为:

Q = foo的酒吧

QF =字段1^5场2^10

PF = FIELD1^50 FIELD2^20

DEFTYPE = dismax

有了这些参数,dismax曲ERY解析器生成一个查询,看起来像这样:

(+(字段1:FOO^5或场:FOO^10)和(字段1:巴^ 5或场:巴^ 10))

但它也产生将只用于提高结果的另一个查询:

字段1:“富巴”^50或场:“富巴”^20

这样你可以根据结果提振在一些领域的比赛,有相关的提升,然后也促进出现在特定的其他领域的短语。

[1] https://cwiki.apache.org/confluence/display/solr/The+Extended+DisMax+Query+Parser

+0

谢谢。这有帮助,但由于某种原因,我无法将所有包含搜索词/结果的结果保留在顶部。我已经尝试过我想要的财产非常大的重量,但由于某种原因,它拒绝应用这些重量或其他东西......:^)我曾尝试将重量放在大部分字段上,但仍然没有任何结果。我不知道发生了什么... – user2173353

+0

嗯...我想我明白了:它希望我把'* term *'而不是'term *'来找到一个包含类似'这是term.'。不太清楚为什么...:^) – user2173353

+0

如果您对我上次评论中的问题有任何想法,请告诉我。但无论如何,非常感谢您的帮助。至少我现在工作得很好。我只怕性能问题。 :) – user2173353

相关问题