基于 NHibernate 的全文搜索
Posted
技术标签:
【中文标题】基于 NHibernate 的全文搜索【英文标题】:NHibernate-based Full-Text Search 【发布时间】:2011-08-27 11:57:33 【问题描述】:我想将全文搜索集成到具有 [Fluent] 基于 NHibernate 的数据访问的 .NET 应用程序中。到目前为止,Lucene.NET 和 NHibernate Search 组合似乎是那里最合理的选择。然而,有几个项目建立在 Lucene 之上,据说可以减轻 Lucene 的复杂性并添加新功能(例如 Solr 或 ElasticSearch)以及围绕这些库的一些 .NET 包装器。那么,我的项目的 [最佳] 选项是什么?
【问题讨论】:
【参考方案1】:如果您已经有一个 nhibernate 数据访问,您应该使用 nhibernate 搜索,因为它集成得非常好,并且学习曲线不会太陡。
Solr 和 Elasticsearch 更独立于系统(例如 restful api),但需要更多的管道工作。
你在这里有很多资源:https://***.com/questions/tagged/nhibernate.search
【讨论】:
感谢您的回复,Mathieu (+)。您是否认为通过 Solr 或 ElasticSearch 实现的功能(例如可扩展性)在此类管道代码上投入一些精力是合理的? 我使用 NHS 索引 15GB 的文档,并且没有遇到性能问题。你要索引多少数据?会经常更新吗? 这是一个初创的 B2B 应用程序,文本的数量取决于我们的销售人员可以获得多少客户。因此,可扩展性确实是一个问题。尽管如此,我认为我们不会很快达到 15GB。【参考方案2】:由于您使用的是 .NET,Solr 和 Hibernate Search 并不能真正提供帮助,并且可能需要您获得另一台专门用于搜索的服务器。我不熟悉 NHibernate Search 等,但随着 .NET 端口的发展,它很可能完全落后于真正的 Java。
如果您可以更改数据访问层,请查看RavenDB。它是在 Lucene 之上用 C#/.NET 编写的,因此您可以获得一个快速的无模式文档数据库和一个打包成一体的全文搜索引擎。
【讨论】:
感谢您的回复。不幸的是,为应用程序切换到另一种数据访问技术几乎是不可能的,当然也不能仅通过全文搜索来证明这一点,尽管 RavenDB 绝对值得一试。 您当然是对的:NH.Search 没有得到积极维护,除了确保它基于最新的 NH 版本构建 - 自最初移植以来一直没有更新。以上是关于基于 NHibernate 的全文搜索的主要内容,如果未能解决你的问题,请参考以下文章