所以,我有一个小型弹性搜索服务器,我正在尝试执行以下操作: 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查询突出显示搜索词)或者唯一的解决办法就是对完整文档精选内容进行另一次查询?
提前致谢。
答案 0 :(得分:0)
如果您更改映射,则可能。 您需要启用术语位置和偏移。
e.g。
"title" : {
"type": "string",
"term_vector": "with_positions_offsets"
}
然后突出显示应该照常工作。我用ES 1.6版进行了测试。
https://github.com/elastic/elasticsearch/issues/10829#issuecomment-148041529