Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用于优先级搜索的ElasticSearch写入查询_Ruby On Rails_Ruby On Rails 4_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Ruby On Rails,Ruby On Rails 4,elasticsearch" /> elasticsearch,Ruby On Rails,Ruby On Rails 4,elasticsearch" />

Ruby on rails 用于优先级搜索的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:

我是elastisearch的新手,我刚刚设置并尝试了默认搜索。我正在使用ElasticSearchRails gem。我需要编写带有优先级搜索的自定义查询(表中的某些字段比其他字段更重要,等等。标题,在过去6个月内更新…)。我试图找到解释或教程如何做到这一点,但似乎没有什么可以理解的。有人能帮我吗,很快就会好起来。

从未使用过ruby/elasticsearch集成,它看起来并不太难。。。文档显示您希望执行以下操作:

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倍