2011-08-10 92 views
3

我知道有几个类似于这个问题,但他们没有提供一个简单的答案手头的问题。对不起,如果你觉得这是重复的,但我认为清晰易懂的答案会让很多人受益。所以,这个问题。Solr“实时”索引

Solr索引更新是否可以自动执行?如果可以的话,那么最好的方法是什么?

下面是一个简单的使用情况,以澄清一个问题:我有一个数据库表与不同种类的数据的多个列。有一个Web应用程序用于管理数据。我有单独的Solr服务器来索引上述表中的指定列。我怎么能达到这样的结果,当用户添加,删除或修改表中的数据时,Solr会注意到已更改并修改索引。

它有必要是“实时”。这意味着几秒钟后将发生变化。当然,大量的数据可能会更多。

在此先感谢

回答

6

这里有两个问题:

能Solr的索引更新是自动的?

是的,他们可以,而且应该总是自动化。您不想为每个更改手动启动索引过程。

,有必要为它是“实时”。

我已经提到了一些方法来减少更改数据和更新索引in this answer之间的延迟。您可以使用autoCommit来确保您的数据在更新x秒内提交。根据时间间隔的不同,您需要减少自动设置和调整其他设置,详情请参阅this

而且保持对NRT wiki page的眼睛相关的信息和对本解决方案。

+0

感谢明确的答案和链接到更多的资源。我将深入调查这些信息,以了解它如何在我的方案中实施。 – frustrated

+0

我还有一个关于“实时”部分的问题。在您的第一个链接中,您指出可以使用ORM等功能来触发索引。我为此使用Solr API,因此它看起来是最佳选择。 基本上data-config.xml定义了我的来自db的表格数据是一个文档,每一行都是一个实体。我可以对实体级别的索引执行更新吗?我记得只有在文档层面才有可能。 – frustrated

+0

@frustrated:我认为你不能混合DIH和ORM事件。 –

2

你可能想看看Apache Solr实现3.3 RankingAlgorithm 1.2。它支持NRT(近实时索引),可以更新10,000文档/秒。您可以在更新期间同时进行搜索。您不需要提交或关闭搜索器。你可以在这里与RankingAlgorithm获取更多有关NRT使用Solr 3.3:

http://solr-ra.tgels.org/wiki/en/Near_Real_Time_Search_ver_3.x