1

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

...这将检查“福特”的所有全文索引属性,并返回所有命中。使用基于 NHibernate 的搜索引擎是否有类似的函数/方法/语法?

4

1 回答 1

1

看看如何在 QueryParser 中合并多个字段?

简短的回答,改变:

var query = "Title:Ford";

到:

var query = "Title:Ford OR Name:Ford OR Field1:Ford OR Field2:Ford"; // etc for all fields
于 2012-05-31T08:08:44.690 回答