2012-05-31 23 views
1

我想在我的基于NHibernate的MVC项目(NHibernate.Search)上使用基于Lucene的全文搜索引擎来实现文本搜索选项。所有我已经看到了如何做到这一点的文档建议我需要看具体的列值,是这样的:如何获得NHibernate.Search FT查询以使用“自由文本”查询风格?

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

回答

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 
+0

我用你提到的多领域查询的事情;这正是我所期待的,它像冠军一样工作。谢谢! –