Немецкие символы Umlaut с диакритическим знаком “ö”, “ä” и “ü” часто заменяются версиями нес диакритическим знаком, когда пользователи вводят, часто для удобства, когда у них нет корректной клавиатуры.
С наиболее символами с диакритикой существует конкретная версия нес диакритическим знаком, которую использует большинство людей. “è” с диакритическим знаком, например, всегда заменяется стандартом “e”.
С символами Umlaut, кажется, существует различие между конвенцией, принятой нашими британцами и нашими американскими пользователями.
Британские пользователи заменят их “o”, и “u” соответственно, где как...
Американские пользователи заменят их “oe”, “одним” и “ue” соответственно.
Наш поиск основан на Lucene. Сеть, и как с любой поисковой платформой, техника, используемая для соответствия всем комбинациям символов с диакритикой, должна заменить их, и когда индекс создается и когда критерии поиска предоставляются, поэтому позволяя соответствию быть сделанными с чисто несимволами с диакритикой.
Как я проанализировал бы символы с диакритикой для поддержки следующего...
Немецкий клиент вводит – “Götz”
Британский клиент вводит – “Gotz”
Американский клиент вводит “Goetz”
Учитывая, что имя находится в нашей базе данных в ее правильной форме “Götz”, затем как я проанализировал бы “Götz” так, чтобы все три из пользователей могли найти его в индексе?
Править
Я нашел эту статью о CodeProject, который был точно, что я искал. Пример показывает, как Синонимы для слов могут также быть добавлены к индексу Lucene так, чтобы они были подобраны, а также оригинальное слово. С маленькой адаптацией я смог сделать точно, что я хотел.
Преобразовать «Гетц» как в «Гоц», так и в «Гетц» в индексное время. Вы можете использовать setPositionIncrement (0) для второго термина, чтобы поиск по фразе работал правильно.