Индексация многоязычного контента с Lucene.net - PullRequest
4 голосов
/ 16 февраля 2009

Я использую Lucene.net для индексации контента, документов и т. Д. На веб-сайтах. Индекс очень прост и имеет такой формат:

LuceneId - unique id for Lucene (TypeId + ItemId)
TypeId   - the type of text (eg. page content, product, public doc etc..)
ItemId   - the web page id, document id etc..
Text     - the text indexed
Title    - web page title, document name etc.. to display with the search results

У меня есть следующие варианты, чтобы адаптировать его для обслуживания многоязычного контента:

  1. Создайте отдельный индекс для каждого языка. Например. Lucene-enGB, Lucene-frFR и т. Д.
  2. Сохраните один индекс и добавьте в него дополнительное поле языка, чтобы отфильтровать результаты.

Какой вариант лучше - или есть другой? Раньше я не использовал несколько индексов, поэтому склоняюсь ко второму.

Ответы [ 2 ]

2 голосов
/ 03 марта 2009

Я делаю [2], но у меня есть одна проблема - я не могу использовать разные анализаторы в зависимости от языка. Я объединил стоп-слова нужных мне языков, но я теряю возможности более продвинутых вещей, которые предложит анализатор, таких как stemming и т. Д.

1 голос
/ 27 марта 2013

Вы можете исключить варианты 1 и 2.
Вы можете использовать один индекс, и поля, содержащие арабские слова, создают два поля для каждого: Если у вас есть поле " Text " может содержать арабское или английское содержимое ==>

  • Создайте 2 поля для " Text ": 1 поле, " Text ", проиндексированное / найденное вашим стандартным анализатором, а другое - " Text_AR " , с арабским анализатором. Для достижения этого вы можете использовать PreFieldAnalyzerWrapper
...