【问题标题】:Any Linq Nhibernate Search?任何 Linq Nhibernate 搜索?
【发布时间】:2013-02-04 01:03:41
【问题描述】:
我想使用 lucene.net 进行一些数据搜索。我读到了结合 lucene.net 和 nhibernate 进行搜索的 nhibernate 搜索。
但是我使用流利的 nhibernate 并且我喜欢使用 linq。我认为使用流利的 nhibernate 不会有问题,但我似乎找不到任何使用 linq 和 nhiberante 搜索的示例。
我可以使用 linq 吗?
【问题讨论】:
标签:
linq
nhibernate
lucene.net
nhibernate-search
【解决方案1】:
您可以同时使用 NHibernate.Search 和 FluentNHibernate,您只需要在创建 ISessionFactory 时连接 NHibernate.Search 侦听器。
个人意见!
我不喜欢使用 linq 来使用全文搜索功能,这只是试图将真实且通常功能强大的界面隐藏在愚蠢的 api 后面,并且通常会出现问题或在此过程中丢失。 (一个例子是带有简单where user.Alias == "sisve" 的linq-to-sql,它会自动转换为sql WHERE Alias = 'sisve'。需要一些详细的知识才能理解C# 中区分大小写的比较变成了不区分大小写的比较SQL Server 的标准安装。)
NHibernate 和 Lucene 都是强大的库,但我会说将它们分开。自己构建 Lucene 索引(您可以使用自定义侦听器来做到这一点,就像 NHibernate.Search 侦听器一样),然后自己查询它。这使您可以更好地了解两个系统的工作原理,并且您可以更轻松地在此基础上实现更好的搜索(您的意思是,构面、自定义提升,...)