2017-04-19 57 views
0

我正在使用天蓝色的搜索,并且我有一个控制台应用程序,其代码如下,工作正常。如何在天蓝色搜索领域进行搜索?

 DocumentSearchResult<Hotel> results; 
     Console.WriteLine("Search started\n"); 
     results = indexClient.Documents.Search<Hotel>("smart", new SearchParameters { Top=5 }); 
     WriteDocuments(results); 

当前其搜索文本中有词“smart”。这是直言,我需要的是我在表格中有几个字段,我想基于该字段进行搜索。

例如让我有两个字段 1)标题 2)SoldDate

我必须编写代码查找具有标题“约翰”和具有出售日期<当前日期的项目。

我该怎么做才能做到这一点?

回答

2

你可以达到你想要的搜索和过滤器是什么:

// Approach #1 
string currentDate = DateTime.UtcNow.ToString("O"); 
var parameters = new SearchParameters() 
{ 
    Filter = "soldDate lt " + currentDate, 
    Top = 5 
} 

results = indexClient.Documents.Search<Hotel>("john", parameters); 

这将过滤的文件,只有那些具有soldDatecurrentDate,然后搜索过滤的文件,这样的文件相匹配,如果任何的可搜索的字段包含“john”。你可以像这样缩小这个下来只是title领域:

// Approach #2 
string currentDate = DateTime.UtcNow.ToString("O"); 
var parameters = new SearchParameters() 
{ 
    Filter = "soldDate lt " + currentDate, 
    SearchFields = new[] { "title" }, 
    Top = 5 
} 

results = indexClient.Documents.Search<Hotel>("john", parameters); 

或者这样:

// Approach #3 
string currentDate = DateTime.UtcNow.ToString("O"); 
var parameters = new SearchParameters() 
{ 
    Filter = "soldDate lt " + currentDate, 
    QueryType = QueryType.Full, 
    Top = 5 
} 

results = indexClient.Documents.Search<Hotel>("title:john", parameters); 

哪种方式,您使用取决于你是否希望所有的搜索字词局限于特定的一组(方法#2),或者如果你想要特定的术语匹配特定的领域(方法#3)。

SearchParameters的参考文献在docs.microsoft.com

+0

我应该给什么,如果我有一个领域'模型',我需要搜索模型是否包含100(像查询)? –

+0

我应该怎么做才能搜索tilte =“john”和job =“engineer”?基本上都应该像查询 –

+0

@hildasonica你已经在别处问过这个问题,所以我会尝试在那里回答它:http://stackoverflow.com/questions/43510832/how-to-set-a-query-for- like-query-in-azure-search-query-syntax –