.Net全文搜索库

时间:2009-04-17 09:37:55

标签: .net nhibernate full-text-search

我昨天发布了一个question关于使用Nhibernate v2进行Nhibernate搜索并且没有收到任何回复。这向我证实,我需要重新考虑使用NHibernate.Search并查看替代的全文搜索解决方案。我希望能够索引和搜索文档,并在搜索结果中显示文档的相关摘录。

如果我不能使用Nhibernate.search,那么将Lucene自己整合到Nhibernate中似乎没什么意义,有没有其他选择。我已经看了Searcharoo,我喜欢它,因为它的代码记录很清楚,我很乐意将它集成到Nhibernate中。

我还应该看看更多的图书馆吗?我应该在没有Nhibernate.Search的情况下使用lucene吗?

2 个答案:

答案 0 :(得分:7)

Lucene.Net是我在各种项目中用来做的事情。

LINQ to Lucene是我工作的一个项目,可以解决您的一些问题。 Lucene要求您严格控制索引和搜索。当您想为大型系统构建高性能搜索引擎时,这非常棒。不好,如果你只是想要在幕后“正常工作”的东西。

我在LINQ To Lucene上为LINQ to SQL类编写了一篇文章,但它适用于任何POCO情况。

<强>更新 我不熟悉Nhibernate到Lucene系统,也不知道它是如何配置的。 通过使用Lucene.Net构建真实的搜索子系统,我在构建索引和查询它们时遇到了一些需要处理的问题。

  • 搜索索引字段存储非常与数据库不同。 db模式(或ORM实体)之间很少有一对一的映射来索引“模式”。
  • 如果您想要访问高级搜索引擎功能,如加权查询,关键字突出显示,自定义比较器(分类器)(等等) - 您会发现自动化的ORM&lt; - &gt; Lucene桥将不足够。所有这些都需要手动构建Query对象图,而不是使用基本的Lucene查询语法。

基本上,如果您希望搜索引擎不仅仅是最基本的东西,那么您将需要直接使用Lucene.Net。

答案 1 :(得分:0)

我曾经使用过DotLucene,但遇到了很多问题。一个主要问题是它需要完全信任才能运行。

此后我开始使用SearchAroo:http://www.searcharoo.net/

它使用XML数据存储,我发现它的性能非常类似于dot lucene。

如果你正在寻找另一种选择,我肯定会看看。