2017-04-19 85 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 –