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

时间:2012-05-31 00:57:51

标签: c# nhibernate full-text-search nhibernate-search

我正在尝试在基于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();
                }
            }

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

            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的搜索引擎是否有类似的功能/方法/语法?

1 个答案:

答案 0 :(得分:1)

查看How to incorporate multiple fields in QueryParser?

简短回答,改变:

var query = "Title:Ford";

为:

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