【问题标题】:Lucene Multilingual text fieldLucene 多语言文本字段
【发布时间】:2011-03-21 00:05:50
【问题描述】:

我看过这个问题 - Indexing multilingual words in lucene,它证实了我的一些怀疑。

我有一个实体,其中包含我希望索引的多个字段。这些字段之一可以是多种语言之一,我需要为每种语言使用不同的分析器。

我最好将其实现为同一索引中的不同字段还是每种语言的不同索引?

我猜想权衡是在运行多个索引的开销和弄乱单个索引的麻烦之间。

任何建议表示赞赏。

【问题讨论】:

  • 您是否需要同时搜索多种语言?如果是这样,您就不能使用多个索引。
  • 我永远不需要执行多语言搜索。

标签: lucene multilingual hibernate-search


【解决方案1】:

还有一个您没有提到的想法:您可以将每种语言都设为非存储、非索引字段。然后,您可以将所有(分析的)数据复制到单个存储+索引字段,它的行为就像您正在搜索单个字段一样。 (这类似于 Solr 的“复制字段”——我不确定在 hibernate 中做起来有多难。)

如果您将它们保存在单独的索引中,您应该注意,您将无法轻松地跨语言搜索(或者,可以说,根本无法搜索)。所以如果你想允许像“english:foo dutch:foo”这样的查询,你需要它们在同一个索引中。

从性能的角度来看,这取决于共享的数据量。如果文档是不相交的(即没有文档中有两种语言),那么将它放在一个索引与两个索引之间可能不会有太大的区别。它们共享的数据越多,Lucene 复制的内存就越多,因此拥有一个索引会更好。我的猜测是,如果你有很多存储数据,这只是一个问题,但是 YMMV。

【讨论】:

  • 好吧,从我的角度来看,问题是这样的:如果我有一个名为 Description 的字段,它的语言可以是 AB,并且它们都使用不同的分析器,如果我针对该字段运行两个分析器以创建 DescriptionADescriptionB,我最终会得到来自未使用的任何语言的严重标记化索引。
  • @Finbarr:所以您要解决的问题是“我如何识别文本使用哪种语言?”
猜你喜欢
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 2022-06-27
  • 2023-02-14
  • 1970-01-01
  • 2019-04-13
相关资源
最近更新 更多