【问题标题】:Serving page data from solr/elasticsearch提供来自 solr/elasticsearch 的页面数据
【发布时间】:2013-11-03 11:22:56
【问题描述】:

我正在使用 Solr(可能会迁移到 Elasticsearch)来索引用户可以搜索的文档。数据来自 MySQL,它接受用户的写入。可以单击每个搜索结果以查看其详细信息,这很常见。详细信息页面从 MySQL 中获取所有数据。

由于详细信息页面显示的几个字段已经在 Solr 中建立索引,将所有字段简单地存储在 Solr 中而不访问数据库会更好吗?详细信息页面已经必须向 Solr 查询更多类似这样的建议。

我相信现在这两种方式都不是问题。但是大多数中等或高流量的网站是做什么的?具有类似功能的网站示例是报纸。 Stackoverflow 本身有些不同,因为数据更加动态,因为用户可以不断添加对问题的回复。

实际上,直到最近,我才从 Solr 提供数据,当我决定添加一个功能,如果从 Solr 而不是 MySQL 提供数据,该功能的实现会更简单,但我不知道这是否是一个好的想法与否。

你们怎么看?谢谢!

【问题讨论】:

    标签: mysql database solr elasticsearch


    【解决方案1】:

    Solr/Elasticsearch 支持此功能。 Solr/ES 中有两种类型的字段 - Indexed 和 Stored。

    索引字段是搜索的对象 - 这些字段会产生匹配项。另一方面,存储字段只是容器。

    将非索引值存储为 Solr 文档中的存储字段是很常见的(至少在我的经验中)。这有助于节省往返数据存储以获取详细结果的时间。

    如果您想拥有搜索和显示功能,可以将字段标记为已存储和已索引。

    您可能会问,为什么不对所有内容编制索引?因为,索引字段除了增加索引时间外,还会增加占用磁盘空间的索引大小。

    所以,我鼓励使用 Solr 作为数据存储(除非每个文档都有大量非索引数据)。如上所述,明智地选择您的索引,您将受益于节省重复的数据库调用。

    【讨论】:

    • 我确实已经在使用存储字段了。但是,它们用于结果一起显示有关搜索结果的信息,而不是在与搜索结果链接的不同页面中。例如,通常您希望在包含搜索结果的页面中显示每个文档的完整标题,为此您需要为标题使用存储字段。但是,当用户点击标题进入“详情”页面时,存储的字段并不能直接使用,即往返是不可避免的。
    • 嗯——这个用例需要一个明确的往返。如果您已经在使用存储字段,那么我想扩大存储字段的数量只会占用磁盘空间。我要注意的是 - Solr 成为一个持久数据存储,我会说这可能有点危险。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2018-07-05
    • 2013-11-16
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    相关资源
    最近更新 更多