我们正在建立一个Solr来索引文档,其中title字段可以是各种语言。谷歌搜索后,我发现了两个选项:
哪一个更好?有什么起伏?
由于
答案 0 :(得分:9)
还有第三种方法,您可以为所有语言使用一组通用字段,但将过滤器应用于字段language
。例如,如果您有字段text
,language
,则可以将所有语言的文本内容放入text
字段,并使用例如fq=language:english
来检索英文文档。
此方法的缺点是您无法使用lemmatisation
,stemming
等语言特定功能。
为每种语言定义不同的架构字段,例如title_en,title_fr,...对每种语言应用不同的过滤器,然后使用相应的语言查询其中一个标题字段。
这种方法具有良好的灵活性,但在存在多种语言时要注意高内存消耗和复杂性。这可以使用多个solr服务器来缓解。
创建不同的Solr内核来处理每种语言,并使我们的应用查询正确的Solr核心。
绝对是个不错的解决方案。但是,单独的管理和轻微的开销是否对您有用可能与您希望使用的语言数量有关。
除非第一种方法适用,否则我可能倾向于第二种方法,除非不需要核心的可扩展性。这两种方法都很好,我认为它基本上归结为偏好。
答案 1 :(得分:1)
这一切都取决于您的要求。我假设您不需要在单个查询中查询多种语言。在这种情况下,将它们分成多个核心是一个更好的主意,因为你可以在不影响其他核心的情况下调整核心。指数。使用多种语言会有一些调整或其他涉及由于词干,拼写检查和其他功能(如果您打算使用它们)。
servlet容器中还有一个多个solr webapps选项。所以这可以是你可以看到的选项。
这一切都取决于您在解决任何问题时可以采取的停机灵活性。
答案 2 :(得分:0)
您需要对每种语言(核心)进行分片。您将无法立即对整个索引进行分片。