如何让 NHibernate.Search FT 查询使用“自由文本”查询样式

本文关键字:查询 自由 文本 自由文本 样式 NHibernate Search FT | 更新日期: 2023-09-27 18:35:53

我正在尝试在基于NHibernate的MVC项目(NHibernate.Search)上使用基于Lucene的全文搜索引擎实现文本搜索选项。 我看到的所有关于如何执行此操作的文档都表明我需要查看特定列的值,例如:

            var query = "Title:Ford";
            using (var search = NHibernate.Search.Search.CreateFullTextSession(s))
            {                   
                using (var transaction = s.BeginTransaction())
                {
                    var carSearchResults = search.CreateFullTextQuery(query)
                        .SetMaxResults(5)
                        .List();  
                    foreach(var car in carSearchResults)
                    {
                        Console.WriteLine(car.Title);
                    }
                    transaction.Commit();
                }
            }

我宁愿查看搜索字符串的所有全文索引列,就像您可以在 SQL 中使用通配符在 FREETEXT 函数上所做的那样......所以我可以做这样的事情:

            var query = "Ford";
            using (var search = NHibernate.Search.Search.CreateFullTextSession(s))
            {                   
                using (var transaction = s.BeginTransaction())
                {
                    var carSearchResults = search.CreateFullTextQuery(query)
                        .SetMaxResults(5)
                        .List();  
                    foreach(var car in carSearchResults)
                    {
                        Console.WriteLine(car.Title);
                    }
                    transaction.Commit();
                }
            }

。这将检查"Ford"的所有全文索引属性,并返回所有命中。 使用基于 NHibernate 的搜索引擎是否有类似的功能/方法/语法?

如何让 NHibernate.Search FT 查询使用“自由文本”查询样式

看看如何在查询解析器中合并多个字段?

简短的回答,更改:

var query = "Title:Ford";

自:

var query = "Title:Ford OR Name:Ford OR Field1:Ford OR Field2:Ford"; // etc for all fields