Я относительно новичок в Solr, поэтому, пожалуйста, простите меня, если мне не хватает чего-то очевидного. У меня есть приложение, которое позволяет пользователям искать музыкальных исполнителей. Индексирование происходит из базы данных только для чтения с правильными написаниями, поэтому на стороне индекса, которую я выяснил.solr PatternReplaceCharFilterFactory работает неожиданно
На стороне запроса, однако, мне нужно предвидеть различные орфографические ошибки/различия и хочу помочь solr найти эти экземпляры. Из нашего старого домашнего поискового решения у меня есть список регулярных выражений и художников, к которым они обращаются. Когда я пытался перевести их в solr, используя PatternReplaceCharFilterFactory, я заметил, что некоторые работали отлично, в то время как другие вообще не работали ... с кажущимся не рифмой и не причиной между ними.
Например:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="em[ei]n[ei]m" replacement="Eminem"/>
точно фиксирует общие орфографические ошибки Эминема. Но для полосы 311:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[Tt]hree [Ee]leven" replacement="311"/>
Не работает. Другим примером является Nine Inch Nails:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="((nine|9).*inch.*nails\b)|(n\.? ?i\.? ?n\.?\b)" replacement="Nine Inch Nails"/>
прекрасно подходит для поиска наиболее распространенных паттернов для названия группы. Но для Eve 6:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[Ee]ve.{0,4}([Ss]ix|6)" replacement="Eve 6"/>
Есть ли что-то фундаментальное, что я пропускаю при использовании этого фильтра? Я пробовал ряд вариаций в регулярном выражении, о котором я упоминал выше (даже до тех пор, как использовать литералы типа «три одиннадцать»), но все же без успеха. Я попытался сделать фильтр в вопросе единственного PatternReplaceCharFilterFactory в анализаторе. Я также точно знаю, что эти элементы находятся в индексе правильно, потому что, когда я ищу правильное написание, он возвращает правильные результаты.
Любые предложения?
Snowdall