Компараторы атрибутов в Vespa.ai - PullRequest
4 голосов
/ 19 июня 2020

Поддерживает ли Vespa компараторы для сопоставления строк, такие как Levenshtein, Jaro – Winkler, Soundex et al. c? Есть ли способ реализовать их как плагины, поскольку некоторые из них доступны в Elasticsearch? Каковы подходы к этому типу поиска?

1 Ответ

4 голосов
/ 19 июня 2020

Режимы сопоставления, поддерживаемые Vespa, описаны здесь https://docs.vespa.ai/documentation/reference/schema-reference.html#match плюс регулярное выражение для полей атрибутов https://docs.vespa.ai/documentation/reference/query-language-reference.html#matches

Ни одно из указанных совпадений / ранжирования строк алгоритмы поддерживаются из коробки. Оба варианта расстояния редактирования больше похожи на функцию ранжирования текста, которую легко реализовать. (Откройте проблему с github по адресу https://github.com/vespa-engine/vespa/issues)

Сопоставление в Vespa происходит в компоненте c ++, поэтому там еще нет поддержки плагинов.

Вы можете развернуть плагин в контейнер, который записан в Java путем развертывания настраиваемого поисковика (https://docs.vespa.ai/documentation/searcher-development.html). Затем вы можете работать с k лучшими совпадениями, используя, например, регулярное выражение или сопоставление n-граммов для получения документов-кандидатов. Алгоритм soundex можно точно реализовать, используя поисковик и обработчик документов.

...