2017-04-19 15 views
0

私は紺碧の検索を使用していますが、私はうまく動作している、以下のようなコードでコンソールアプリケーションを持っています。紺碧の検索のフィールドに基づいて検索する方法は?

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

現在、「スマート」という単語でテキストを検索しています。これはまっすぐなforwordです、私が必要とするのは、私はテーブルにいくつかのフィールドがある、私はfeildに基づいて検索したいです。

例えば、私はタイトルを持っている "ジョン・販売日付<現在の日付を持っているアイテムを見つけるためのコードを記述する必要が二つのフィールド 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); 

これはcurrentDatesoldDateを有する唯一のものにドキュメントをフィルタし、その後のいずれかの場合には文書が一致していることを、このようなフィルタの文書を検索します検索可能なフィールドには "john"が含まれています。あなたはすべての検索用語が特定のセットに限定するかどうかに依存する使用方法

// 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); 

// 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); 

またはこのような:あなたはこのように単にtitleフィールドにこれを絞り込むことができます(アプローチ#2)、または特定の用語を特定のフィールドに一致させたい場合(アプローチ#3)。

SearchParametersの参照はdocs.microsoft.comです。

+0

フィールド 'model'があり、モデルに100(like query)が含まれているかどうかを調べる必要がある場合は、どうすればよいですか? –

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

関連する問題