Я пытаюсь найти совпадения между словами и там уменьшенную форму, используя Elasticsearch.Fuzzy regex Elasticsearch
Пусть у меня есть входное слово shmp
(индексируется shampoo
в ES), я произвожу следующее регулярное выражение s.*?h.*?m.*?p.*?
и выполнить следующий DSL запрос:
{
"query": {
"regexp": { "name": "s.*?h.*?m.*?p.*?" }
}
}
Есть ли способ также сделать нечеткий поиск в то же время (например, max_expansions 1), чтобы s.*h.*?n.*?p.*?
соответствовал бы?
Однако я не уверен, что это лучший способ пойти, возможно, есть некоторые работы, о которых я не думал.
Как насчет 's. *? H. *? [Mn]. *? P. *?'? – Kasramvd
Фактически письмо, которое может расходиться, неизвестно. Слишком легко в противном случае;) – Orelus
Так что в этом случае вы можете использовать диапазон символов 's. *? H. *? [Az]. *? P. *?' Или другое регулярное выражение, например, вы также можете использовать '\ w' для соответствия всем символам слов. – Kasramvd