我正在使用PyElasticsearch (elasticsearch客户端库)。我正在搜索像Arvind,今天的印度经济时报,这样的字符串,这给了我合理的结果。我希望能在搜索查询中更多地增加第一个单词的权重。我怎么能这么做?
res = es.search(index="article-index", fields="url", body={
"query": {
"query_string": {
"query": "keywordstr",
"fields": [
"text",
"title",
"tags",
"domain"
]
}
}
})我现在正在使用上面的命令进行搜索。
发布于 2014-03-18 17:42:44
Lucene查询语法完成了这一任务。谢谢
4/queryparsersyntax.html#Boosting%20a%20Term
发布于 2014-03-18 15:42:41
将给定的查询拆分为多个术语。在你的例子中是Arvind,Kejriwal.现在,表单查询字符串查询(或字段查询或符合需要的任何其他查询)对每个给定的术语。查询字符串查询将类似于以下http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/query-dsl-query-string-query.html
{
"query_string" : {
"default_field" : "content",
"query" : "<one of the given term>",
"boost": <any number>
}
}现在,您已经获得了多个查询,如上面所示,具有不同的boost值(取决于哪一个具有更高的权重)。使用BOOL查询将所有这些查询合并为一个查询。http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html如果您希望所有的术语都出现在结果中,查询将如下所示。
{
"bool" : {
"must" : [q1, q2, q3 ...]
}
}您可以使用不同的bool查询选项。例如,您希望在结果中显示三个术语中的任何一个,然后查询将类似于
{
"bool" : {
"should" : [q1, q2,q3 ...]
},
"minimum_should_match" : 3,
}发布于 2014-03-18 12:53:22
理论上:
https://stackoverflow.com/questions/22476315
复制相似问题