Lucene.Net是否适合作为频繁更改内容的搜索引擎?
或者更具体地说,任何人都可以对lucene.net索引的更新速度提出主观意见。搜索经常变化的内容的任何其他方法都会很棒。
我们正在开发一个论坛。论坛帖子将经常被添加到论坛库中。我们认为我们需要将这些帖子非常快速地添加到lucene索引(<0.5s)以便可用于搜索。最初将在存储库中有大约5E6个帖子。假设搜索引擎在非外来服务器上运行(我知道这非常模糊!)。
关于解决搜索频繁变化内容的问题的其他建议表示赞赏。论坛帖子需要在可变数量的命名标签上进行搜索(标签名称和值必须匹配)。基于SQL的方法(基于Toxi模式)并没有给我们提供我们想要的性能。
答案 0 :(得分:9)
Out论坛(http://episteme.arstechnica.com)使用Lucene作为搜索后端,所以它是可行的。帖子没有像你想的那样快速编制索引,但我们可以通过增强索引硬件和使用更智能的缓存策略来解决这个问题。
这个问题的一般答案是:它取决于你的写/更新模式。论坛相对容易,因为大多数内容都是新内容,现有内容的更新频率较低。
对于论坛,我建议使用“归档”索引和“实时”索引。实时索引可能包括来自最后一天,一周,一年的帖子,而归档索引将包含可能不会再次触及的大量帖子。因此,当有人创建新帖子时,它最初将在实时索引中编入索引。稍后,某些批处理作业将清除实时索引,并将所有内容重新索引到存档中。
Lucene非常擅长查询多个索引。你应该滥用这种能力。 :)
答案 1 :(得分:4)
Lucene.Net非常快,但是有很多东西可以在错误使用时减慢查询速度。我强烈建议您阅读Erik Hatcher和OtisGospodnetić撰写的Lucene in Action书。它包含一个关于性能测试和调优的非常好的章节。