Как использовать n-граммы приблизительного соответствия с Solr?
У нас есть база данных фильмов и сериалов, и поскольку данные поступают из многих источников различной надежности, мыЯ хотел бы иметь возможность делать нечеткие совпадения строк в названиях эпизодов. Мы используем Solr для поиска в нашем приложении, но механизмы сопоставления по умолчанию работают на уровне слов, что недостаточно для коротких строк, таких как заголовки
В прошлом я использовал примерное соответствие по n-граммам, и я был очень рад обнаружить, что Lucene (и Solr) поддерживают что-то подобное из коробки. К сожалению я нене смог правильно его настроить.
Я предположил, что мне нужен специальный тип поля для этого, поэтому я добавил следующий тип поля в мой schema.xml:
и изменил соответствующее поле в схеме:
Тем не менее, это не работает, как я ожидал. Анализ запросов выглядит правильно, но я неЯ не получаю никаких результатов, что заставляет меня поверить, что что-то происходит во время индексации (т. е. заголовок индексируется как строковое поле по умолчанию вместо поля триграммы).
Запрос я пытаюсь что-то вроде
title:"guy walks into a psychiatrist office"
(с опечаткой или два), и это должно соответствоватьПарень заходит в кабинет психиатра ".
(Я не совсем уверен, что запрос правильный.)
Более того, я хотел бы иметь возможность сделать что-то большее на самом деле. Я'Мне бы хотелось понизить строку, удалить все знаки препинания и пробелы, удалить английские стоп-слова, а затем изменить строку на триграммы. Однако фильтры применяются только после токенизации строки ...
Заранее спасибо за ваши ответы.