В тот момент, когда я индексирую текст, я сохраняю частотность каждого слова в базе данных. Это прекрасно работает, так как все поиски основаны на целых словах, и все возможные поиски известны. Но сейчас я хочу добавить возможность поиска по префиксу (поиск части слова). Я могу получить результаты/попадания из префиксного поиска с помощью elasticsearch, используя это:
GET /my_index/address/_search
{
"query": {
"prefix": {
"main_text": "word_part"
}
}
}
см.: https://www.elastic.co/guide/en/elasticsearch/guide/current/prefix-query.html
Это мое текущее отображение:
{
"my-index":{
"mappings":{
"doc":{
"properties":{
"keycounter":{
"properties":{
"counter": {"type":"integer"},
"keyword":{"type":"keyword"}
}
},
"main_text":{
"type":"text",
"fielddata":true
},
"main_text_keycounter":{
"properties":{
"counter":{
"type":"long"
},
"keyword":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
},
"time_written":{
"type":"date"
},
"translated_text":{
"type":"text",
"fielddata":true
},
}
}
}
}
}
Но я не хочу подсчитывать частоту для каждого результата, который я получаю, поскольку это будет стоить O (N) для каждого текста. Есть ли какой-нибудь разумный способ хранения/получения частоты для этого типа поиска с использованием elasticsearch?