【问题标题】:How to store search results for localization如何存储本地化搜索结果
【发布时间】:2015-07-07 20:30:57
【问题描述】:

我有类似如下的搜索结果:

search.get_res()
{
  "Title": "The Lion King",
  "Synopsis": "When the evil Scar kills Mufasa..."
  "RunTime": 92
}

但是,如果用户使用不同的语言,我还需要本地化 TitleSynopsis。换句话说,我需要能够指定如下内容:

search.get_res(language="en")
search.get_res(language="fr")
search.get_res(language="de")

存储它的最佳方式是什么?这一切都应该在一个 json 对象中吗?可能是这样的:

{
    "DEFAULT": {
        "Title": "The Lion King",
        "Synopsis": "When the evil Scar kills Mufasa..."
        "RunTime": 92
    }, "FR": {
        "Title": "Le Grande Lion",
        "Synopsis": "Quande elle..."
    }
}

或者,存储 solr 搜索结果的最佳方式是什么?如果所有内容都存储在同一个 json 对象中,那么 50 个概要可能会变得非常大...

【问题讨论】:

    标签: python json search solr localization


    【解决方案1】:

    我假设您想要搜索并显示多种语言的结果。如果是这样,那么有两种策略

    1. 多核配置。每种语言都有自己的核心,在应用程序端,您可以根据用户选择的语言指定要搜索的核心。
    2. 单核配置,每种语言都有重复的字段 - 或多或少与您正在考虑的相同解决方案。

    我找到了两个网站,其中详细介绍了上述配置。 http://www.basistech.com/indexing-strategies-for-multilingual-search-with-solr-and-rosette/ http://pavelbogomolenko.github.io/multi-language-handling-in-solr.html

    如果您只想选择以不同语言显示结果但将搜索限制为英语,则解决方案可能会更简单。 示例文档

    {
        "Doc1": {
            "EN_Title": "The Lion King",
            "EN_Synopsis": "When the evil Scar kills Mufasa..."
            "FR_Title": "Le Grande Lion",
            "FR_Synopsis": "Quande elle..."
        }
    }
    

    在 Solr 搜索中,您将返回字段指定为

    &fl=FR_*(法语)或

    &fl=EN_*(英文版)

    【讨论】:

    • 感谢您。使用路线#2会有什么缺点吗?如果在一个 json obj 中存储这么多文本没有任何大的缺点,这似乎是一种更简单的方法。
    • 我能想到的唯一缺点是文档大小会随着您添加更多语言而增加。这反过来会增加您的单个集合/共享索引大小。查询单个大索引会比较慢。但是,如果您只有几百万个文档托管在具有大量 RAM 的 SOLR 服务器上,您可能不会注意到差异。我无法给出具体数字,因为这取决于很多其他因素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多