Вопрос

Я настраиваю поисковую систему Solr, которая будет индексировать несколько языков. Я создал пользовательский UpdateProcessorFactory, чтобы выяснить, какие разделы входного текста и на каком языке, и затем я копирую эти разделы документа в специфичные для языка поля. Например, с этим текстом:

" Hello World, Bonjour le Monde, Hallo Welt. "

Копирует " Hello World " в текстовое поле "Bonjour le Monde"; в поле fr-text и "Hallo Welt" в текстовое поле. В каждом поле есть соответствующие анализаторы языка для токенизации и определения слов.

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

Это было полезно?

Решение

Лучший способ - использовать DisMaxRequestHandler . Он соответствующим образом проанализирует каждое поле для соответствующего языка (как определено в schema.xml).

Итак, если ваш запрос выглядит / Solr / выберите кварты = dismax & амп;? QF = ан-текст% 20fr-текст% 20de-текст & амп; д = привет% мирового Solr поступит правильно.

(предполагается, что вы настроили dismax как solr.DisMaxRequestHandler в блоке requestHandler в solrconfig.xml)

Большая часть анализа выполняется быстро. Ограничения производительности в основном зависят от размера индекса, общего количества сроков и т. Д. Обязательно настройте все в соответствии с руководством по производительности solr на их вики. В настоящее время я использую индекс 60 ГБ и продолжаю получать запросы в диапазоне менее 100 мс на оборудовании, которое не так уж и красиво.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top