Подтвердить что ты не робот

Использование Solr для индексирования нескольких языков

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

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

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

Спасибо

4b9b3361

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

В контейнере сервлетов также есть опция нескольких веб-приложений solr. Таким образом, это может быть вариант, на который вы можете посмотреть.

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

Ответ 3

  • Если вы используете несколько ядер, и вам нужно оштрафовать, одна из проблем, которые я вижу, - это:

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

  • Если вы используете одно ядро, возможно, вы теряете пространство с текстовыми столбцами, которые "не заполнены", не уверены в этом.