使用Lucene.Net的最佳实践是什么?或者,我在哪里可以找到一个好的lucene.net使用示例?
发布于 2009-06-16 15:43:42
如果你打算使用Lucene,我会买一本从A到Z的好书。Lucene有一个非常陡峭的学习曲线(在我看来)。这不仅仅是知道如何搜索你的,这是很重要的-它也是关于索引。执行基本搜索很容易,但创建一个由数百万条数据记录组成的索引,并仍然能够对其进行闪电般的快速搜索是可能的,但却相当困难。没有任何教程可以教你这一点。
我推荐Michael McCandless,Erik Hatcher和Otis Gospodnetić的Lucene in Action, Second Edition。虽然它是为Lucene而不是Lucene.NET编写的,但这应该不是问题,因为termonology和api基本上是相同的。
但是,如果你只是想快速尝试一下,你可以阅读this site。名字说明了一切:-)
发布于 2009-06-16 15:50:51
当数据量很大,需要超快的读取响应时间时,我们经常使用Lucene.NET。我们通常将需要搜索的数据和关键字放入其中,以便将结果映射回包含剩余详细信息的数据库表。然后,这允许我们搜索用户(在我们的情况下),检查他们过去的参与。这不仅仅是一个用户名搜索,而是一个遍历各种详细信息的搜索,试图找到该用户的任何其他实例(尽管是不同的形式)。例如,我们查找用户ID (来自一个系统),他们的ID来自另一个系统,可能是来自供应商系统的ID,flash cookie GUID,站点cookie GUID,等等。当我们找到一个标识符时,我们为用户的其他实例寻找该标识符的其他实例。这允许我们对用户进入多个系统中的一个系统进行重复数据删除(因为他们每24小时只允许参与一次系统)。在SQL中,这个算法(我含糊其辞)将永远耗费时间!在Lucene.NET中,只需不到一秒钟。Lucene比SQL Server有更多的搜索可能性。它最糟糕的地方就是写入或更新索引。这通常是作为job...all一次完成的。但是,如果您需要写入索引并实时更新它,您需要编写一些巧妙的代码来确保它是以锁定的方式写入的(想象一下使用单例排队),否则您的代码将会重叠和爆炸!
我在我的书(ASP.NET Social Networking)中介绍了Lucene.NET的用法,您可以在其中找到许多帮助here。
发布于 2009-06-17 14:11:09
Lucene.NET的问题是,它没有像标准(java) Lucene那样活跃的社区--所以它总是能有效地运行旧版本的Lucene。尽管我们更喜欢.NET,但出于这个原因,我们决定使用Lucene的Java版本。如果您也使用Solr,那么集成起来就非常容易。
https://stackoverflow.com/questions/1002255
复制相似问题