我正在做多语言搜索。我将使用 lucene 作为工具来做这件事。
我已经有翻译的内容了,每个文件会有3到4种语言。
对于索引和搜索,可能有 4 种策略,对于每个文档/内容:
但是我还没有测试每一种方式,有经验的人能告诉我哪种方式更适合进行多语言搜索吗?
谢谢!
最佳答案
尽管这个问题是几年前提出的,但它仍然是一个很好的问题。
有几个方面需要考虑评估不同的解决方案:
如果 (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
多个指数 (策略一)
+ 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
独立于单个或多个字段方法,如果您将内容索引为多个文档,您的解决方案可能需要处理“错误”语言中匹配项的结果折叠。一种方法可能是添加一个语言字段并为此过滤。
推荐:您选择的方法/策略取决于项目要求。只要有可能,我都会选择多字段或多索引方法。
关于search - 使用 lucene 进行多语言搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7280368/