Использование Solr для индексации нескольких языков - PullRequest
12 голосов
/ 05 апреля 2011

Мы настраиваем Solr для индексации документов, где поле заголовка может быть на разных языках.После поиска в Google я нашел два варианта:

  1. Определить различные поля схемы для каждого языка, например, title_en, title_fr, ... применяя различные фильтры к каждому языку, а затем запросить одно из полей заголовка с соответствующим языком.
  2. Создание различных ядер Solr для обработки каждого языка и обеспечения правильности запросов в нашем приложении. Solr.

Какое из них лучше?Какие бывают взлеты и падения?

Спасибо

Ответы [ 3 ]

9 голосов
/ 05 апреля 2011

Существует также третий вариант, где вы используете общий набор полей для всех языков, но применяете фильтр к полю language.Например, если у вас есть поля text, language, вы можете поместить текстовое содержимое для всех языков в поле text и использовать, например, fq=language:english только для получения документов на английском языке.

Недостатком этого подхода является то, что вы не можете использовать специфичные для языка функции, такие как lemmatisation, stemming и т. Д.

Определить различные поля схемы для каждого языка, например title_en,title_fr, ... применяя различные фильтры к каждому языку, а затем запрашивая одно из полей заголовков с соответствующим языком.

Этот подход обеспечивает хорошую гибкость, но остерегается большого потребления памяти и сложности, когда присутствует много языков.,Это можно смягчить, используя несколько серверов Solr.

Создание различных ядер Solr для обработки каждого языка и обеспечения правильности запросов нашего приложения к ядру Solr.

Определенно хорошее решение.Но сработает ли для вас отдельное администрирование и небольшие накладные расходы, вероятно, в зависимости от количества языков, которые вы хотите использовать.

Если первый подход не применим, я, вероятно, склонялся бы ко второму, если не желательна масштабируемость ядер.Любой подход хорош, и я думаю, что в основном все сводится к предпочтениям.

1 голос
/ 05 апреля 2011

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

Существует также возможность нескольких веб-приложений solr в контейнере сервлета. Так что это может быть вариант, который вы можете посмотреть.

Все зависит от гибкости, которую вы имели в отношении времени простоя, которое вы могли бы использовать для устранения любых проблем.

0 голосов
/ 05 апреля 2011
  • Если вы используете несколько ядер и вам нужен шард, одна из проблем, которую я вижу, это:

вам нужно будет делать шардинг на каждом языке (ядре). Вы не сможете одновременно выполнять разметку по всему индексу.

  • Если вы используете одно ядро, возможно, вы потеряете место с текстовыми столбцами, которые «не заполнены», не уверен насчет этого.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...