2012-05-31 40 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

我用你提到的多領域查詢的事情;這正是我所期待的,它像冠軍一樣工作。謝謝! –