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