我们的数据库中有枚举,自由文本和引用字段等。
每个枚举都有自己的翻译,自由文本可以使用任何语言。我们想进行高效的大规模自由文本搜索和基于枚举值的搜索。
我知道像Solr这样的解决方案很好,但这意味着我们必须使用系统中所有语言的所有文本对整个非规范化记录进行索引。这似乎有点过分。
建议使用什么方法搜索多语言标准化数据?有人解决过吗?
最佳答案
ETL。提取,转换,加载。换句话说,从您现有的数据库中获取数据,对其进行转换(这不仅仅是将其标准化),然后将其加载到SOLR中。 SOLR数据库将比现有数据库小很多,因为没有关系开销。 SOLR搜索可以减轻现有数据库服务器的大部分负担。
充分了解如何配置和使用SOLR,并了解SOLR内核。您可能希望将某些语言放在单独的内核中,因为那样您可以更有效地在SOLR中使用各种词干算法。但是,即使使用了多语言数据,您仍然可以使用双字母组(例如,与中文分析一起使用)。
由于您可以尝试使用单一语言索引或所有语言索引,因此拥有多个核心会使搜索变得更加复杂。但是,对语言数据进行分组并应用特定于语言的停用词,受保护的单词,词干和语言分析工具会更加有效。
通常,您将在索引中包含一些关键数据,以便在通过SOLR搜索找到记录时,可以直接将其引用到源数据库中。同样,您可以同时具有标准化和非标准化的数据,例如,一个枚举可以记录在英语的标准化字段中,也可以用与自由文本相同的语言记录在非标准化的字段中。为了应用两种不同的分析和过滤处理,可以复制一个字段。
为了了解SOLR的工作方式以及最佳配置方式,值得您花一部分时间试用一下。