Lucene Поиск японских иероглифов

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

Проблема в том, что если у меня есть японская строка こんにちは、このバイネイです, и я ищу с помощью こ, который является первым символом, то он работает хорошо, тогда как если я использую более одного японского символа (こんにち) в токене поиска, поиск не выполняется, и есть документ не найден.

Поддерживаются ли японские символы в lucene? какие настройки нужно сделать, чтобы заработало?


person Pranali Desai    schedule 15.04.2010    source источник
comment
@codeka, я использую StandardAnalyzer   -  person Pranali Desai    schedule 15.04.2010


Ответы (3)


Я не думаю, что может быть анализатор, который будет работать для всех языков. Проблема в том, что в разных языках действуют разные правила в отношении границ слов и образования корней (например, в тайском языке пробелы совсем не используются для разделения слов). А если и есть, то я уж точно не хотел бы быть сопровождающим!

Что вам нужно сделать, так это «пометить» блоки текста как тот или иной язык и использовать правильный анализатор для этого конкретного языка. Вы можете попытаться определить язык «автоматически», выполнив анализ символов (т. Е. Текст, использующий преимущественно японскую катакану, скорее всего, японский)

person Dean Harding    schedule 15.04.2010
comment
@codeka, мне нужно найти анализатор, который будет использоваться для определенных слов, скажем (AZ) для английского и (こ-す) для японского, а затем просмотреть предоставленный текст, чтобы узнать, какой анализатор будет использоваться. - person Pranali Desai; 15.04.2010

Встроенный анализатор lucene не поддерживает японский язык.

Вам нужно установить какой-нибудь анализатор, например sen, который является java-портом mecab, довольно популярный японский анализатор, и он быстрый.

Существует 2 подтипа, называемых

  1. CJKAnalyzer, который поддерживает китайский и корейский языки и использует метод биграмм
  2. JapaneseAnalyzer, который поддерживает только японский язык, использует Morphological Analyzer и должен быть очень быстрым.
person YOU    schedule 15.04.2010
comment
@S.Mark, пользователь может иметь что угодно в своем текстовом поле, как мне решить, какой анализатор использовать. Есть ли какой-нибудь общий анализатор, который будет работать для всех языков? - person Pranali Desai; 15.04.2010
comment
@Pranali, в этом случае лучше подойдет метод биграмм. - person YOU; 15.04.2010
comment
@S.Mark, у вас есть пример кода или ссылка для реализации метода биграмм. какой анализатор для этого нужен и как его настроить - person Pranali Desai; 15.04.2010
comment
@Pranali, у меня нет реального опыта в этом, но поскольку CJKAnalyzer использует метод биграмм, это будет хорошая попытка. в моем ответе есть ссылка под названием sen, это порт Java, поэтому вам может понадобиться порт это на C#, но так как mecab написан на C, это не должно быть так сложно. - person YOU; 15.04.2010
comment
@Pranali, есть список сообщений, касающихся lucene+.net в SO, вы можете взглянуть на него. - person YOU; 15.04.2010

Вам следует использовать новые японские анализаторы, недавно выпущенные в Lucene 3.6.0. Они основаны на превосходном морфологическом анализаторе Kuromoji, недавно предоставленном Lucene в LUCENE-3305.

Документы немного скудны на момент написания этой статьи, поэтому вот еще несколько ссылок…

  • Если вы используете Solr, вот пример схемы, который будет работать на Websolr.
  • Слайды из моей презентации на встрече herokujp 20 апреля 2012 г. , по полнотекстовому поиску с упором на анализ японского языка.

(Это все для Java-версии Lucene.)

person Nick Zadrozny    schedule 30.04.2012