2009-09-08 120 views
0

我有一个约2000万行的SQL 2000数据库,我需要进行查询以获取基于完整/部分文本搜索的产品信息。 基于此,我需要回到其他表格来检查我的业务流程。 我已经实现了使用SQL过程,但我只能验证每行6行(没有线程..其长业务逻辑)。我试图找到一种更好的方法来提高性能。 Lucene.NET可能对此有所帮助。我有几个问题。Lucene.NET与SQL SERVER 2000

你能指点我吗?

在Lucene上构建索引时,如何与SQL数据库和lucene数据库同步? 您是否认为Lucene可以提供真正的性能增益?

回答

1
  • 您可以从Mark Krellenstein's 'Search Engine versus DBMS'开始,查看全文搜索引擎(例如Lucene)是否适合您。从理论上讲,Lucene应该比SQL更快的文本搜索,但是你的里程可能会有所不同。
  • 您可以使用Lucene进行增量更新,这与数据库复制有点类似。这使Lucene索引与数据库保持同步。
+0

感谢您的回答。我浏览了很多教程,并且可以将DB的记录索引到本地文件。 正如我所说我的数据库大约有1000万条记录,如果我从头开始构建索引,Lucene需要一段时间。 我的做法是: - 创建一个windows服务,查找数据库中的任何更新(每小时)并使索引与数据库记录保持同步。 假设,每小时增加2000个记录,是否会对更新索引产生不利影响。索引编译期间搜索速度是否放慢? – bkhanal 2009-09-08 14:00:21

+0

那么,你需要以某种方式将记录放入Lucene索引中。最好的方法是从头开始离线建立索引。一旦你有了,你可以像你所建议的那样使用增量更新。我只有在使用MySQL的Java Lucene方面的经验,但我相信这些问题在您的设置中是相似的 - 每小时2000条记录或每分钟约40条更新似乎是合理的。它可能会减慢搜索速度。见http://www.lucidimagination.com/Community/Hear-from-the-Experts/Articles/Scaling-Lucene-and-Solr – 2009-09-09 07:50:02