Lucene.NET索引的实时更新

时间:2011-06-30 02:28:37

标签: mysql full-text-search lucene.net lucene

我需要使用Lucene.NET在mysql数据库上进行全文搜索。我必须使用InnoDB,因此Lucene是我选择的搜索提供商。

有两个字段需要编入索引,它们是varchar(200)和varchar(2000)。但问题是,一旦插入记录,就应该可以对记录进行全文搜索。所以我必须同时将记录插入到lucene索引和db中。

这样做是否可行以及单次插入需要多长时间?这是一个Web应用程序,我希望每秒500次插入。

如果您已经这样做,请告诉我您的技巧。如果这不可行,我唯一的选择是返回SQLServer以使用其全文搜索。 :(

P.S。

我并不担心数据库插入性能。但我不知道的是Lucene将更新索引的时间。

3 个答案:

答案 0 :(得分:1)

Lucene.Net或SQLServer,除非你找到一个聪明的方法,否则你每天有43,400,000个docs出现问题。

答案 1 :(得分:1)

是的,使用Lucene的NearRealtimeSearch功能是可行的。

http://wiki.apache.org/lucene-java/NearRealtimeSearch

但是,如果要保持良好的搜索性能,那么在提交时需要巧妙地管理索引优化/合并。

答案 2 :(得分:0)

这里有一些指导原则:

  • 在高峰时段插入了大量数据,是否有必要立即在索引中使用它?计划好的任务无法解决问题吗?
  • 你在这些领域做了什么样的搜索?如果它真的很简单,那不是过度杀戮吗?
  • 你告诉过我们关于写入量的问题,但读取怎么样?看起来会有相当多的数据,但是如果没有大量搜索,那么不是来自表格的选择ID,其中像'%search%'那样的col足够吗?

您应该使用不同的索引策略获得概念验证,并对其进行压力测试以找出最适合的策略。