2017-08-15 94 views
0

我想通過AzSearch C#SDK來管理AzSearch文檔(索引項目)。Azure搜索結果是否保證*查詢的訂單?

我試圖做的是按查詢結果(主要是*結果)連續列出文檔並編輯它們的值。

要列出查詢結果如下;

public async Task<IEnumerable<MyIndexModel>> GetListAsync(string query, bool isNext = false) 
{ 
    if (string.IsNullOrEmpty(query)) query = "*"; 
    DocumentSearchResult list; 
    if (!isNext) 
    { 
     list = await _indexClient.Documents.SearchAsync(query); 
    } 
    else 
    { 
     list = await _indexClient.Documents.ContinueSearchAsync(ContinuationToken); 
    } 
    ContinuationToken = list.ContinuationToken; 
    return list.Results.Select(o => o.Document.ToIndexModel()); 
} 

一個要求是項的第n個列表。由於AzSearch不提供分頁,我想知道它是否提供有序列表。

如果我們不更新文件數(未指數進一步),並AzSearch給持平/有序列表,所以我可以通過運行ContinueSearchAsync()法80次得到jump to 80th list同一個文件?

我是否需要爲我的需求維護另一個查找表?

回答

0

*是通配符查詢。與通配符查詢相匹配的文檔在排名中會得到相同的常數分數,因爲無法衡量文檔與文檔的接近程度。此外,不保證相同樂譜文件之間的順序。匹配''的文檔可以在一個響應中排名第一,在另一個響應中排名第七,即使發出相同的查詢。

爲了獲得通配符查詢一致排序,我建議傳遞一個$排序依據子句中,搜索= * & $ ORDERBY = ID ASC例如。 Azure Search支持通過$ skip和$ top進行分頁。這document提供了指導。