2014-08-29 65 views
0

我是新来的elastisearch,我只是设置它并尝试默认搜索。我正在使用elasticsearch rails gem。我需要使用优先搜索来编写自定义查询(表格中的某些字段比其他字段更重要,比如title,updated_at在过去6个月内......)。我试图找到解释或教程如何做到这一点,但似乎没有什么可以理解的。任何人都可以帮助我,很快就会好起来。ElasticSearch为优先搜索写作查询

回答

1

因为从来没使用的红宝石/ elasticsearch集成,它似乎并不太难......该文档here表明你想要做这样的事情:

client.search index: 'my-index', body: { query: { match: { title: 'test' } } } 

要执行基本搜索。

的ES文件here展示了如何做一个现场提振查询:

{ 
    "multi_match" : { 
    "query" : "this is a test", 
    "fields" : [ "subject^3", "message" ] 
    } 
} 

全部放在一起,你会做这样的事情:

client.search index: 'my-index', body: { query: { multi_match : { 
    query : "this is a test", 
    fields : [ "subject^3", "message" ] 
    } } } 

这将允许你搜索/增强字段 - 在上述情况下,主题字段被赋予消息字段得分的3倍。

关于如何进行高级评分有很好的blog post。它的部分显示调整基于日期比分的例子:

... 
    "filter": { 
     "exists": { 
      "field": "date" 
     } 
     }, 
     "script": "(0.08/((3.16*pow(10,-11)) * abs(now - doc['date'].date.getMillis()) + 0.05)) + 1.0" 
... 
0

我在做PHP的,没用过的宝石从Ruby on Rails的。在这里,您可以使用脱字符(^)表示法为字段赋予优先级。

例子: - 假设,如果我们有表中字段,即姓名,电子邮件,信息和地址,应优先考虑的名称和内容,可以参考以下写

> { "multi_match" : { 
>  "query" : "this is a test", 
>  "fields" : [ "name^3", "message^2".... ] } } 

这名有3个比其他字段的优先级高一倍,消息的优先级比其他字段高两倍。