Индексирование многоязычного контента с Lucene.net
-
23-08-2019 - |
Вопрос
я использую 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
У меня есть эти варианты, чтобы адаптировать его для обслуживания многоязычного контента:
- Создайте отдельный индекс для каждого языка. Например, Lucene-Engb, Lucene-Frfr и т. Д.
- Держите один индекс и добавьте в него дополнительное языковое поле, чтобы отфильтровать результаты.
Какой вариант лучший - или есть другой? Я не использовал несколько индексов раньше, поэтому я склоняюсь ко второму.
Решение
Я делаю [2], но одна проблема у меня - то, что я не могу использовать разные анализаторы в зависимости от языка. Я объединил стоп -слова, которые я хочу, но я теряю возможности более продвинутых вещей, которые будет предлагать анализатор, например, Stemming и т. Д.
Другие советы
Вы можете исключить вариант 1 и 2.
Вы можете использовать один индекс и поля, которые содержит арабские слова, создают две поданы для каждого: если у вас есть поле "Текст"Может содержать арабское или английское содержимое ==>
- Создайте 2 поля для "Текст": 1 поле"Текст«Индексировано/искал с вашим стандартным анализатором и еще одним»,Text_ar"с арабиканализером. Чтобы достичь этого, вы можете использоватьPrefieldanalyzerWrapper