【问题标题】:Best way to keep index real time?保持索引实时的最佳方法?
【发布时间】:2010-10-25 13:32:30
【问题描述】:

我有一个大约 700 Gb 的 Solr/Lucene 索引文件。我需要索引的文档正在实时读取,大约每 30 分钟提交 1000 个文档并需要索引。在我的场景中,每 30 分钟运行一次脚本,为尚未索引的文档编制索引,因为要求新文档应尽快可搜索,但此过程会减慢搜索速度。

这是我可以索引最新文档的最佳方式还是有其他更好的方式!

【问题讨论】:

    标签: optimization lucene solr


    【解决方案1】:

    首先,请记住 Solr 还不是实时搜索引擎。还有work要做。

    您可以使用master/slave setup,其中索引在主服务器上完成,搜索在从服务器上完成。有了这个,索引不会影响搜索性能。在主服务器上完成提交后,强制从服务器从主服务器获取最新的索引。当新索引在从属服务器上复制时,它仍在处理与先前索引的查询。

    另外,请检查您cache warming settings。请记住,如果这些设置过于激进,这可能会减慢搜索速度。还要检查在new searcher event 上启动的查询。

    【讨论】:

    【解决方案2】:

    您可以使用 Lucene 轻松做到这一点。将索引拆分为多个部分(或者准确地说,在构建索引时,创建“更小的”部分。)为每个部分创建搜索器并存储对它们的引用。您可以在这些单独的部分之上创建一个 MultiSearcher。

    现在,将只有一个索引可以获取新文档。定期将文档添加到此索引,提交并重新打开此搜索器。

    更新最后一个索引后,您可以使用之前打开的搜索器再次创建新的多搜索器。

    因此,在任何时候,您都只会重新打开一个搜索器,而且速度会非常快。

    【讨论】:

      【解决方案3】:

      检查 Lucene 周围的 http://code.google.com/p/zoie/ 包装器以使其成为实时 - 代码由 Linkedin 捐赠。

      【讨论】:

        【解决方案4】:

        ^^i 这样做,使用普通的 lucene,非 solr,效果非常好。但是不确定目前是否有解决方法。 twitter 最近使用 lucene 进行搜索,并且只需在任何更新时写入其索引即可有效地进行实时搜索。它们的索引完全驻留在内存中,因此更新/读取索引无关紧要,并且会立即发生,只要一次只有一个写入器,就可以在写入时始终读取 lucene 索引。

        【讨论】:

        • "立即发生" -> 延迟仍然在 10 秒左右
        【解决方案5】:

        【讨论】:

        • 请在您的答案中包含不仅仅是一个链接。拉出相关信息,所以不是每个人都必须点击,如果链接失效,它仍然有一些价值。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-24
        相关资源
        最近更新 更多