2009-09-14 11 views
13

Studiuję soundex, metafonę i inne techniki wyszukiwania ciągów w ciągu ostatnich kilku dni, i według mnie oba algorytmy działają dobrze w obsłudze nie-angielskich słów transliterowanych na angielski.Włączanie soundex/metaphone dla znaków spoza alfabetu angielskiego

Jednak moim obowiązkiem jest, aby takie wyszukiwanie zadziałało w oryginalnych, nieprzetłumaczonych językach, z wykorzystaniem alfabetów takich jak niemiecki, norweski, a nawet cyrylicowy.

Czy są jakieś algorytmy wyszukiwania zdolne do obsługi tych alfabetów w całości? Czy lepiej korzystam z bibliotek wyszukiwania pełnotekstowego innych firm, takich jak Lucene? W związku z tym pojawia się pytanie "czy Lucene obsługuje alfabety nieangielskie?"

+1

Jeśli Twój przypadek użycia jest po prostu wyszukiwaniem tekstowym w językach innych niż angielski, może nie być potrzebny soundex. Potrzebujesz Lucene z odpowiednim analizatorem, jak powiedział ire_and_curses. Jeśli chcesz obsługiwać różne warianty pisania tego samego słowa, będziesz potrzebował algorytmu dopasowania fonetycznego. Czy możesz powiedzieć coś więcej na temat swojego przypadku użycia? –

Odpowiedz

15

Nie jestem ekspertem w tej dziedzinie, ale twoje wymagania wydają mi się dość trudne. Soundex został specjalnie zaprojektowany dla angielskich brzmień, a także dla postaci. Nie sądzę, że sprawdzi się dobrze w przypadku języków innych niż angielski. Zobacz na przykład odpowiedzi na this related question.

Double-Metaphone to próba radzenia sobie ze znacznie bardziej złożonymi wariantami niż Soundex lub Metaphone i została zaprojektowana do obsługi nieprawidłowości w różnych językach. Może to być wystarczające dla twoich potrzeb. Na połączonej stronie znajduje się lista implementacji biblioteki.

Obsługa innych języków w Lucene opiera się na koncepcji Analyzers. Lucene jest dostarczany z zestawem analizatorów dla różnych języków (chociaż nie mogłem znaleźć domyślnej listy), ale jakość może być quite variable.

+0

Wygląda na to, że Lucene + analizatory jest tym, czego naprawdę szukam, dzięki. :) –

+0

co z językami chińskimi, japońskimi, arabskimi i indyjskimi? – Sharique

0

Istnieje kilka dobrych referencji dotyczących Wikipedii, począwszy od artykułu Soundex. Nie wiem, czy istnieją biblioteki zaprojektowane do obsługi tak szerokiej gamy języków.

+0

Wszystkie odnośniki wskazują na algorytmy, które obsługują zliceryzowane pisownie nazw europejskich. Nie widziałem żadnego, który tak naprawdę traktuje znaki specjalne tak, jak jest - chyba że je rozumiem niesłusznie. –

+1

Pomyślałem, że być może niektóre warianty Soundex zostały zaprojektowane tak, aby działały lepiej z innymi językami, ale są skoncentrowane na pisowni angielskiej lub angielskiej. Nie byłoby trudno napisać coś LIKE Soundex dla każdego z tych języków, ale prawdopodobnie potrzebujesz pomocy lingwisty, jeśli nie jesteś native speakerem. –