Ruby on rails 用于优先级搜索的ElasticSearch写入查询
我是elastisearch的新手,我刚刚设置并尝试了默认搜索。我正在使用ElasticSearchRails gem。我需要编写带有优先级搜索的自定义查询(表中的某些字段比其他字段更重要,等等。标题,在过去6个月内更新…)。我试图找到解释或教程如何做到这一点,但似乎没有什么可以理解的。有人能帮我吗,很快就会好起来。从未使用过ruby/elasticsearch集成,它看起来并不太难。。。文档显示您希望执行以下操作:Ruby on rails 用于优先级搜索的ElasticSearch写入查询,ruby-on-rails,ruby-on-rails-4,
elasticsearch,Ruby On Rails,Ruby On Rails 4,
elasticsearch,我是elastisearch的新手,我刚刚设置并尝试了默认搜索。我正在使用ElasticSearchRails gem。我需要编写带有优先级搜索的自定义查询(表中的某些字段比其他字段更重要,等等。标题,在过去6个月内更新…)。我试图找到解释或教程如何做到这一点,但似乎没有什么可以理解的。有人能帮我吗,很快就会好起来。从未使用过ruby/elasticsearch集成,它看起来并不太难。。。文档显示您希望执行以下操作: client.search index: 'my-index', body:
client.search index: 'my-index', body: { query: { match: { title: 'test' } } }
client.search index: 'my-index', body: { query: { multi_match : {
query : "this is a test",
fields : [ "subject^3", "message" ]
} } }
进行基本搜索
ES文档显示了如何执行字段增强查询:
{
"multi_match" : {
"query" : "this is a test",
"fields" : [ "subject^3", "message" ]
}
}
把所有这些放在一起,你会做这样的事情:
client.search index: 'my-index', body: { query: { match: { title: 'test' } } }
client.search index: 'my-index', body: { query: { multi_match : {
query : "this is a test",
fields : [ "subject^3", "message" ]
} } }
这将允许您搜索/增强字段——在上述情况下,主题字段的分数是消息字段的3倍
有一个非常好的关于如何做先进的得分。部分内容显示了根据日期调整分数的示例:
...
"filter": {
"exists": {
"field": "date"
}
},
"script": "(0.08 / ((3.16*pow(10,-11)) * abs(now - doc['date'].date.getMillis()) + 0.05)) + 1.0"
...
我用过php,从未使用过RubyonRails中的gem。在这里,您可以使用插入符号(^)表示法为字段指定优先级 示例:-假设表中有名称、电子邮件、消息和地址等字段,并且应该为名称和消息指定优先级,则您可以编写如下内容
> { "multi_match" : {
> "query" : "this is a test",
> "fields" : [ "name^3", "message^2".... ] } }
在这里,name的优先级是其他字段的3倍,message的优先级是其他字段的2倍