elasticsearch more_like_this with highlight

时间:2015-02-25 15:45:53

标签: elasticsearch

所以,我有一个小型弹性搜索服务器,我正在尝试执行以下操作: 1)用户搜索一些关键字。 2)向用户显示相关结果的列表。结果显示在突出显示中,突出显示搜索词。 3)用户点击结果。 4)新页面显示整个文档,关键字在整个文档中突出显示,并且列出了相关的(more_like_this)结果。

我的第一个查询如下:

{
"query" : 
{
    "filtered" : 
    {
        "query": {"term": {
           "text": {
              "value": "term"
           }
        }}
    }
},
"highlight":
{
    "fields":
    {
        "title" : {"number_of_fragments" : "0"},
        "text" :  {}
    },
    "pre_tags" : ["<b>"],
    "post_tags" : ["</b>"]
},
"_source" : ["title", "date", "_id"],
"from" : 0,
"size" : 10

}

我的第二个查询如下(id显然是文档ID,例如1000): { "query": { "more_like_this": { "fields" : ["text","title"], "docs": [{ "_id" : "1000" }], "min_term_freq" : 1, "include" : true } }, "_source" : [ "title", "text", "_id", "url" ], "from" : 0, "size" : 10 }

有没有办法实现我想要的东西(让more_like_this查询突出显示搜索词)或者唯一的解决办法就是对完整文档精选内容进行另一次查询?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您更改映射,则可能。 您需要启用术语位置和偏移。

e.g。

"title" : {
    "type": "string",
    "term_vector": "with_positions_offsets"
}                     

然后突出显示应该照常工作。我用ES 1.6版进行了测试。

https://github.com/elastic/elasticsearch/issues/10829#issuecomment-148041529