我正在进行模糊搜索,需要查看匹配的单词。例如,如果我正在搜索查询testing
,并且它与带有句子The boy was resting
的字段匹配,我需要知道匹配是由于resting
这个词
我尝试设置参数explain = true
,但它似乎不包含我需要的信息。有什么想法吗?
答案 0 :(得分:8)
好的,这就是我要找的东西:
经过一番研究,我找到了弹性搜索的Highlighting feature。
默认情况下,它会返回围绕匹配的上下文片段,但您可以将片段大小设置为查询长度,以仅返回完全匹配。例如:
{
query : query,
highlight : {
"fields" : {
'text' : {
"fragment_size" : query.length
}
}
}
}
答案 1 :(得分:0)
使用explain
会给你一些线索,虽然不是很容易获得。
如果您运行以下内容,也可以在https://www.found.no/play/gist/daa46f0e14273198691a处找到,则应该看到点击description: "weight(text:nesting^0.85714287 in 1) […]
中的description: "weight(text:testing in 1) [PerFieldSimilarity] […]
,_explanation
等等。
#!/bin/bash
export ELASTICSEARCH_ENDPOINT="http://localhost:9200"
# Create indexes
curl -XPUT "$ELASTICSEARCH_ENDPOINT/play" -d '{}'
# Index documents
curl -XPOST "$ELASTICSEARCH_ENDPOINT/_bulk?refresh=true" -d '
{"index":{"_index":"play","_type":"type"}}
{"text":"The boy was resting"}
{"index":{"_index":"play","_type":"type"}}
{"text":"The bird was testing while nesting"}
'
# Do searches
curl -XPOST "$ELASTICSEARCH_ENDPOINT/_search?pretty" -d '
{
"query": {
"match": {
"text": {
"query": "testing",
"fuzziness": 1
}
}
},
"explain": true
}
'