2009-08-11 53 views
42

我试图决定一个.Net项目的开源搜索/索引技术。似乎Java项目的标准是Lucene,但就.Net而言,Lucene.Net项目似乎非常不活跃。这仍然是最好的选择吗?或者还有其他可行的选择吗?什么是最好的和最活跃的开源.Net搜索技术?

+4

+1:我对此非常感兴趣。我尝试着使用SQL Server的全文索引处理器。它可以很好地搜索诸如pdf,doc等二进制文件;但在搜索常规列时速度很慢。在我看来,6秒钟搜索7000行表是不可接受的。现在我只使用LIKE'value%'简单的搜索,它返回的速度非常快。 – NotMe 2009-08-11 01:47:55

回答

23

虽然他们还没有“完全成熟”发布(即完整的文档,网站更新)Lucene.Net相当长一段时间,仍然有新的提交到其SVN存储库。 例如最新版本(2.3.2)在07/24/09(see here)中被标记。 由于开发仍然活跃,我会将其用于新的全文搜索项目。

+0

我有点认为这将是答案。然后是Lucene.Net。谢谢大家! – jamesaharvey 2009-08-26 14:46:02

2

看一看www.searcharoo.net。它有一个爬虫,并具有工作词干,索引办公文档/ PDF等功能。作者对codeproject文章非常积极,并且很快回答了问题。

6

由于lucene.net是一个端口,所以它必然会滞后于java。我也不喜欢lucene port是如何直接复制的,尽管它让我更容易理解文档。如果您不需要超紧凑(二元)集成,需要考虑的事项是使用Solr。我以前用它取得了很好的成功。它仍然支持Lucene,但我认为它更好,因为它具有更好的功能。您可以通过HTTP端点从.net使用它。

有一个问题要问自己,就是你在搜索解决方案中真正需要/想要的东西。实施搜索有很多方法,并不是所有的解决方案都适用于每种情况。

3

虽然它不是.NET我会建议使用Solr的作为建立在Lucene和将是简单的整合赋予了它返回的XML/HTTP和JSON

6

SQLite的有FTS3(全文搜索3)可能的事实做你想做的事。我没有直接的经验,但我相信它是明确开发来完成Lucene的工作,至少在简单的情况下。我不相信你可以改变标记器或任何东西(无论如何不修改源代码),但它是一个选项。

+1

我们在我们的产品中使用SQLite FTS,对于我们的特定情况,它比Lucene.NET更好,更快。 – 2009-08-25 15:33:14

11

知道这是不开源的,但它是一个免费非常全面从微软提供的:

Microsoft Search Server 2008 Express

  • 外的the-盒子相关性。

    本地化界面。

    可扩展的搜索体验。

    没有预设文件限制。

    连续传播索引。

    外的现成索引连接器

    内容摘要。

    突出显示。

    最佳投注和定义。

    查询更正。

    重复折叠。

    按属性筛选。

    按语言筛选。

    按日期排序。

    电子邮件/ RSS提醒

+2

但是,如果要将其用于搜索索引,则可以轻松达到数据库大小限制。它也不是主要为文本索引而设计的,尽管文本索引可能有效,但与lucene等相比,它的表现会相当差。 – 2009-08-24 12:18:16

+1

有趣的 - 我不知道MS做了这样的产品。 – RichardOD 2009-08-30 19:46:56

+1

ms搜索... yuck! – ADAM 2011-02-15 07:33:47

3

据我了解,你需要“只是”一个全文索引现有的数据库,并为您在原则上的SQL Server全文搜索工作,但您当前的实施/设置过于缓慢。

如果我是你,我就不会去一个完全不同的方法(想想乱七八糟保持同步外部指标与您的数据库,或加入从两个等查询结果)。尝试解决SQL Server的性能问题,因为没有人会认真地假设用于搜索7k行的6秒是企业级解决方案的最后一个词,该解决方案用于某些最大的数据库...也许尝试提出一个新问题与此功能有关常见的陷阱(我不是这方面的专家),你可能最终得到一个简单的修复,而不是一个完整的重建搜索架构;)

0

如果你真的不坚持的.Net你可以给狮身人面像一试。开源并可用于所有平台(Windows/Linux)。

4

Lucene.net在NHibernate的实现,所以如果你也正在寻找一个O/R映射器,组合可能是值得更深入的检查。

目前,我们开发一个原型和配置Lucene是一堆分钟(我们使用功能NHibernate)来完成。

+0

我也给nHibernate一个尝试。谢谢(你的)信息。 – jamesaharvey 2009-08-26 15:07:51

5

在几个项目中使用了Lucene.Net之后,我还想将编译Lucene的Java版本的建议添加到.net代码IKVM.NET中。它的工作原理非常奇妙,您不必担心Java版本的过时问题。您也可以选择编译所有额外的库并使用它们(我在一个项目中使用GIS搜索的东西)。

+1

你有没有想过为此创建一个codeplex项目?也许设置一个定期构建 – Mikos 2010-07-15 21:54:32

+0

+1这个明显的但容易被忽略的选项,给出Lucene.NET我还没有想过这个,您是否遇到过任何可能使非Java商店变得困难的障碍,或者您是否将IKVM用于大小如此平滑的项目? – 2010-07-16 07:11:08

+1

@Mikos - 非常漂亮的想法;如果事实证明这对Lucene大小的项目来说是可行的,那么对于这种方法来说这可能是一个很好的优先选择 - 或者这种方法已经司空见惯了,而且我刚刚失踪了呢? – 2010-07-16 07:13:43

1

我曾经使用DotLucene但遇到了一些问题。一个重要的原因是它需要完全信任才能运行。

因为我已经搬到使用SearchAroo:http://www.searcharoo.net/

它采用了XML数据存储,而且我发现它的性能是非常相似点Lucene的。

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

相关问题