34

使用 Lucene.Net 的最佳实践是什么?或者我在哪里可以找到一个好的 lucene.net 使用示例?

4

5 回答 5

18

如果你打算使用 Lucene,我会买一本从头到尾的好书。Lucene 的学习曲线非常陡峭(在我看来)。重要的不仅是知道如何搜索您的内容,还包括对其进行索引。进行基本搜索很容易,但是创建一个包含数百万条数据记录的索引并且仍然能够对其进行闪电般的快速搜索是可能的,但非常困难。没有教程可以教你。

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

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

于 2009-06-16T15:43:42.343 回答
9

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

我在我的书(ASP.NET 社交网络)中介绍了 Lucene.NET 的用法,您可以在这里找到很多帮助。

于 2009-06-16T15:50:50.510 回答
2

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

于 2009-06-17T14:11:08.720 回答
1

Simon Green 有一个很好的三部分系列,讲述了他如何设置 Lucene.Net 以使用他的 NHibernate 实现。第一部分介绍该系列第二部分和第三部分讨论了技术细节。

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

于 2010-02-24T15:26:07.263 回答
1

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

于 2009-07-24T07:13:51.750 回答