Я использую эластичный поиск для запроса в поле theme
в документах. Например:
[
{ theme: 'landcover' },
{ theme: 'land cover' },
{ theme: 'land-cover' },
etc
]
Я хотел бы указать поиск термина landcover
, который соответствует всем этим документам. Как мне это сделать?
До сих пор я пытался использовать оператор нечеткости в поиске match
, а также нечеткий запрос. Однако ни один из этих подходов, кажется, не работает, что удивило меня, потому что мое понимание нечетких поисков заключается в том, что они обеспечивают средство неточного сопоставления.
Чего мне не хватает? Из документов я вижу, что нечеткость определенно ищет близкие приближения к поисковому запросу:
При запросе к текстовым полям или полям ключевых слов, нечеткость интерпретируется как расстояние редактирования Левенштейна - количество изменений одного символа, которое необходимо быть сделанным в одну строку, чтобы сделать ее такой же, как и в другой строке.
Я бы посчитал, что 'landcover' и 'land cover' близки. Разве это не так? (это первый раз, когда я услышал о Левенштейне редактировать расстояние, поэтому я не знаю, что означают дополнительные / меньшие символы в терминах этого измерения).
Пример запроса на совпадение, который, кажется, не работает:
{
query: {
match: {
'theme': {
query: 'landcover'
fuzziness: 'AUTO' // I've tried 2, '2', 6, '6', etc.
},
},
},
}
// When the term is 'land-cover' and fuzziness is auto, then 'land cover' is matched. But 'landcover' is not
И пример нечеткого запроса, который, похоже, не работает:
{
query: {
fuzzy: {
'theme': {
value: query,
fuzziness: 'AUTO', // Tried other values
},
},
},
}
// When the term is 'land-cover' and fuzziness is auto, then 'landcover' is matched. But 'land cover' is not. So works almost opposite to the match query in this regard
(ПРИМЕЧАНИЕ. Эти запросы преобразуются в JSON и выполняются и возвращают ощутимые результаты, просто нечеткость не работает так, как я ожидал)
Осматривая StackOverflow, Я вижу некоторые вопросы, которые, по-видимому, указывают на то, что запрос индекса каким-то образом связан с тем, как создается индекс - то есть я не могу просто выполнить adho c запросов для любого индекса, который уже существует, и ожидать результатов. Это правильно? (извините - я новичок вasticsearch и запрашиваю индекс, который уже существует).
Этот ответ кажется связанным (как найти близкие совпадения для поискового запроса): { ссылка } - упоминается, что я должен сделать что-то, что называется «отображением поля» перед индексацией данных. но тогда пример запроса не включает в себя оператор fuzziness
. Так что в этом случае я запутался в том, для чего вообще нужен смысл оператора нечеткости.