Lucene.Net最佳实践

时间:2009-06-16 15:30:08

标签: .net indexing lucene lucene.net full-text-indexing

使用Lucene.Net的最佳做法是什么?或者我在哪里可以找到一个好的lucene.net使用样本?

6 个答案:

答案 0 :(得分:18)

如果你要和Lucene一起工作,我会买一本好书从A到Z。Lucene的学习曲线非常陡峭(在我看来)。它不仅知道如何搜索你的重要 - 它也是关于索引它。进行基本搜索很容易,但是创建一个由数百万条数据记录组成的索引,并且仍然可以对其进行快速搜索,但这很困难。没有教程可以让你了解这一点。

我推荐Michael McCandless,Erik Hatcher和OtisGospodnetić的Lucene in Action, Second Edition。虽然它是为Lucene而不是Lucene.NET编写的,但这不应该是一个问题,因为termonology和api基本相同。

但是,如果您想快速尝试一下,可以阅读this site。这个名字说明了一切: - )

答案 1 :(得分:9)

当数据量巨大且需要超快的阅读响应时间时,我们经常使用Lucene.NET。我们通常坚持使用数据,因为我们需要搜索以及允许我们将结果映射回具有剩余细节的数据库表的密钥。然后,这允许我们搜索用户(在我们的例子中)检查他们过去的参与。这不仅仅是一个用户名搜索,而是一个迭代各种细节的搜索,试图查找该用户是否有任何其他实例(尽管形式不同)。例如,我们查找用户ID(来自一个系统),来自其他系统的ID,可能来自供应商系统的ID,闪存cookie GUID,站点cookie GUID等等。当我们找到一个标识符时,我们为其他用户实例查找该标识符的其他实例。这允许我们将用户进入重复进入许多系统之一(因为他们参与任何系统只允许每24小时一次)。在SQL中,这种算法(我模糊不清)将永远!在Lucene.NET中,它只需不到一秒钟。 Lucene比SQL Server有更多的搜索可能性。它很糟糕的是写入或更新你的索引。这通常是作为一项工作......一下子完成。但是,如果你需要写入索引实时更新它,你需要编写一些聪明的代码来确保它以锁定的方式写入(想想用单例排队)或者你的代码会重叠并爆炸!

我在我的书(ASP.NET Social Networking)中介绍了Lucene.NET的用法,你可以找到很多帮助here

答案 2 :(得分:3)

答案 3 :(得分:1)

Lucene.NET的问题在于它没有像标准(java)Lucene这样的活跃社区 - 所以它总是有效地运行旧版本的Lucene。虽然我们更喜欢.NET,但我们决定使用Lucene的Java版本。如果你也使用Solr,它很容易集成。

答案 4 :(得分:1)

'Lucene in Action'是了解如何编制索引以及如何搜索的最佳书籍。它甚至涵盖了高级搜索技术和编写自定义分析器。虽然这本书是针对Java的...但我已经使用本书在.net中实现了搜索和索引。

答案 5 :(得分:1)

Simon Green有一个很好的三部分系列讲述他如何设置Lucene.Net来使用他的NHibernate实现。 Part one introduces the seriesPart twopart three讨论技术细节。

我发现Lucene.Net代码示例非常有用,即使我的项目没有使用NHibernate。