Хотя вопрос был задан пару лет назад, это все же отличный вопрос.
Существует несколько аспектов, которые следует учитывать при оценке различных подходов к решению:
- используются ли языковые анализаторы во время индексации?
- всегда ли известен язык запросов (например, выбираемый пользователем)?
- всегда ли язык запросов соответствует одному из языков "контента"?
- должен быть перенастроен только контент, соответствующий языку запроса?
- важна ли актуальность?
Если (1.) и (5.) действительны в вашем проекте, вы не должны рассматривать какую-либо стратегию, которая (повторно) использует одно и то же поле для нескольких языков в одном и том же инвертированном индексе, поскольку термины частоты для различных языков все смешалось (независимо от того, индексируете ли вы многоязычный контент как один документ или как несколько документов). Может быть интересно знать, что добавление полей, специфичных для языка «n», не приводит к увеличению индекса в n раз, но по понятным причинам это приводит к некоторым издержкам.
Одно поле (Стратегии 2 и 4)
+ only one field to query
+ scales well for additional languages
+ can distinguish/filter languages (if multiple documents, and extra language field)
- cannot distinguish/filter languages (if single document)
- cannot just display the queried language (if single document)
- "wrong" term frequencies (as all languages mixed up)
Несколько полей (Стратегия 3)
+ correct term frequencies
+ can easily restrict/filter queries for particular language(s)
+ facilitates Auto-Complete & Spellcheck / Did-You-Mean
- more fields to index
- more fields to query
Несколько индексов (Стратегия 1)
+ correct term frequencies
+ can easily restrict/filter queries for particular language(s)
+ facilitates Auto-Complete & Spellcheck / Did-You-Mean
- additional languages requires all their own index
Независимо от подхода с одним или несколькими полями, вашему решению может потребоваться обработка свертывания результатов для совпадений на «неправильном» языке, если вы индексируете свой контент как несколько документов. Одним из подходов может быть добавление языкового поля и фильтра для этого.
Рекомендация: Подход / стратегия, которую вы выбираете, зависит от требований проекта. Когда бы ни было возможно, я бы выбрал подход с несколькими полями или несколькими индексами.