nhibernate - 解析搜索字符串(进入 NHibernate Criterias )

标签 nhibernate search criteria

我想为我的项目实现高级搜索。 搜索现在使用用户输入的所有字符串,并与标准 API 进行大分离。

这很好用,但现在我想实现更多功能:AND、OR 和括号()

我很难解析字符串 - 并根据字符串构建标准。我找到了 this Stackoverflow question , 但它并没有真正帮助(他没有说清楚他想要什么)。

我找到了另一个 article , 但这支持更多并吐出 sql 语句。 我经常听到的另一件事是 Lucene - 但我不确定这是否真的对我有帮助。


我搜索了一下,找到了 Lucene.Net WhitespaceAnalyzer 和 QueryParser。

它将搜索 A AND B OR C 更改为类似 +A +B C 的内容,这是朝着正确方向迈出的良好一步(加上它处理括号)。 下一步是将转换后的字符串转换为一组连词和析取词。

Java example I found正在使用我在 NHibernate 中找不到的查询生成器。

还有什么想法吗?

最佳答案

我猜你还没有听说过 Nhibernate Search到现在

Nhibernate Search 在底层使用了 lucene,并为您提供了使用 AND、OR、语法的所有选项。
您所要做的就是为您的实体添加索引,Nhibernate 会在预定义的位置对其进行索引。
下次您可以使用 lucene 公开的功能搜索此索引,然后返回您的域级实体对象。

using (IFullTextSession s = Search.CreateFullTextSession(sf.OpenSession(new SearchInterceptor()))) {

        QueryParser qp = new QueryParser("id", new StopAnalyzer());

        IQuery NHQuery = s.CreateFullTextQuery(qp.Parse("Summary:series"), typeof(Book));

        IList result = NHQuery.List();

很强大,不是吗?

关于nhibernate - 解析搜索字符串(进入 NHibernate Criterias ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1409224/

相关文章:

java - 更新表的多行最快的方法是什么

c# - NHibernate 没有连接到 sql server

c# - Fluent NHibernate - 如何使用鉴别器创建每个子类的表映射?

java - 在 Java 中搜索和替换单词

android - 如何在 API 级别 8 的 ListView 中使用 SearchView 和 Filter 模式

spring - Hibernate Search..访问一个没有被密封的密封工作队列

用于选择具有空子集合的所有实体的 nHibernate 标准

java - 在 Hibernate 中获得独特的结果

nhibernate - llblgen 和 nHibernate 之间有什么区别?

nhibernate - 为什么 Entity Framework 不支持 ODBC?