Найти фактическое совпадающее слово при использовании нечеткого запроса в эластичном поиске
Я новичок в elasticsearch и искал fuzzy query search.
Я сделал новый индекс продуктов с объектами / записями значений, как это
{
"_index": "products",
"_type": "product",
"_id": "10",
"_score": 1,
"_source": {
"value": [
"Ipad",
"Apple",
"Air",
"32 GB"
]
}
}
Теперь, когда я выполняю нечеткий поиск запроса в elasticsearch, как
{
query: {
fuzzy: {
value: "tpad"
}
}
}
Он возвращает мне правильную запись (продукт, только что сделанный выше), которая ожидается.
И я знаю, что термин tpad
соответствует ipad
, так что запись была возвращена.
Но технически, как бы я узнал, что он совпал ipad
. Упругий поиск просто возвращает полную запись (или записи), как это
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.61489093,
"hits": [
{
"_index": "products",
"_type": "product",
"_id": "10",
"_score": 0.61489093,
"_source": {
"value": [
"Ipad",
"Apple",
"Air",
"32 GB"
]
}
}
]
}
}
Есть ли какой-либо способ в эластичном поиске, чтобы я мог узнать, соответствует ли он tpad
ipad
3 ответа:
Если вы используете выделение, Elasticsearch покажет соответствующие термины:
curl -XGET http://localhost:9200/products/product/_search?pretty -d '{ "query" : { "fuzzy" : { "value" : "tpad" } }, "highlight": { "fields" : { "value" : {} } } }'
Elasticsearch вернет соответствующие документы с выделенным фрагментом:
{ "took" : 31, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 0.13424811, "hits" : [ { "_index" : "products", "_type" : "product", "_id" : "10", "_score" : 0.13424811, "_source":{ "value" : ["Ipad", "Apple", "Air", "32 GB" ] }, "highlight" : { "value" : [ "<em>Ipad</em>" ] } } ] } }
Если вы просто хотите проанализировать результат,вы можете использовать плагин Inquisitor.
Если вам нужно сделать это программно, я думаю, что функция подсветки поможет вам:
Определение того, какие слова были сопоставлены в нечетком поиске