Расширенные символы (европейские) в США ascii для индексации поиска - PullRequest
2 голосов
/ 26 марта 2011

Я ищу таблицу или эвристическую библиотеку, которая может преобразовывать расширенные символы, такие как o, со шляпкой над ним в обычную ascii o.

Я собираюсь сделать это в целях индексации поиска, так как большинство людей не собираются вводить o в шапке.

Например, я набираю «Cote» в поиске, но я хочу, чтобы мой поиск включал в себя такие вещи, как «Cote».

Похоже, Солр не конвертирует их.Я попробовал java.text.Normalizer и друзей, но это не сработало. сработало, см. Решение ниже.

Ответы [ 4 ]

3 голосов
/ 30 марта 2011

Вы хотите использовать ASCIIFoldingFilterFactory при выполнении индексации и анализа запросов в Solr. Если вы хотите автономно, вы можете просто взять исходный код и делать все, что он делает.

0 голосов
/ 26 марта 2011

Это похоже на работу:

import java.text.Normalizer;

Normalizer.normalize("ô", Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]","");
0 голосов
/ 26 марта 2011

У вас правильная общая идея, но неправильный конкретный подход.

Обратите внимание, что во многих европейских языках очень плохая идея расставлять акценты.Люди набирают их по причине.Очень разные слова отличаются только акцентом.«Папа» - это не то же самое, что «папа».Даже не близко.Пользователи этих языков ожидают, что их наберут, и ожидают, что в них будут найдены поисковые запросы, которые уважают различия.

Во-вторых, в этой области уже проделано много работы.См. Lucene.apache.org, в котором есть набор токен-фильтров, которые делают множество вещей, которые вы могли бы или не могли хотеть.

Существуют также коммерческие предложения с другим потенциально полезным поведением, таким как отображение «бег»«запустить» и все такое.

Если вы действительно уверены, что хотите это сделать, сначала нормализуйтесь до «разложенного» (NFKD), а затем просто удалите акценты.Viol (а).

0 голосов
/ 26 марта 2011

Я быстро покопался и не нашел ни одной доступной библиотеки, которая будет переводить символы.Хотя я мог что-то упустить.

Я нашел Solr Javadoc для всех их фабричных классов:
http://lucene.apache.org/solr/api/org/apache/solr/analysis/package-summary.html

Я уверен, что вы уже видели выше, новозможно, там есть что-то, что вы можете использовать.

Я лично советую вам написать свой фильтр.Что я не верю, будет очень легко.Если вы принимаете только Unicode, все будет проще, но если вы используете веб-приложение, вам нужно будет позаботиться о наборе символов, поступающем из браузера вашего пользователя, а затем преобразовать этот набор символов в Unicode.

Bestудачи.

...