本文介紹使用多元索引Search介面查不到資料的現象、原因和解決方案。

現象

使用多元索引Search介面查詢資料時,出現查不到資料問題。

原因

  • 資料表中的資料未正確同步到多元索引。
    • 資料表中的資料以非同步方式同步到多元索引,所以多元索引中的資料存在一定延遲,增量資料同步延遲時間大部分在10秒以內,全量資料同步延遲時間與資料表的資料量成正比。
    • 多元索引中的列名區分大小寫,可能造成與資料表中的列名不匹配。例如資料表中列名為ColumnName,多元索引中的對應列名為columnname。
    • 多元索引中列的資料類型與資料表中的資料類型不匹配。例如資料表中某列為Integer,多元索引中對應列的資料類型為Keyword。
      说明 Table Store的Wide column模型是schema-free的儲存結構,同一個屬性列的值可以有多種資料類型,所以可能出現部分行未同步成功的情況。
    • 多元索引中列的資料類型與資料表中的資料格式不匹配。例如資料表中某列資料類型為String,值為-91,100,多元索引中對應列的資料類型為Geopoint。
      说明 多元索引中地理位置類型格式為"緯度,經度",且緯度範圍為-90~+90,經度範圍-180~+180,且順序不能寫反。
  • 使用的查詢方式錯誤。
    • 多元索引中資料類型為Keyword的欄位使用MatchQuery查詢部分值。例如資料表中的資料為"abc",多元索引中對應列的資料類型為Keyword,查詢條件為MatchQuery("ab"),由於Keyword是不可分詞類型,無法使用MatchQuery匹配部分值。
    • 查詢條件中參數設定錯誤。例如資料表中的資料為"abc",多元索引中對應列的資料類型為Keyword,查詢條件TermQuery("ab")。
    • 多元索引中資料類型為Keyword的欄位使用RangeQuery查詢時條件設定問題。例如資料表中的資料為20,多元索引中對應列的資料類型為Keyword,查詢條件為RangeQuery(>10)。
      说明 RangeQuery中不同資料類型的比較規則為Keyword資料類型的值按照字典序比較,Long和Double資料類型的值按照大小比較。
    • 分詞器使用錯誤,例如資料表中的資料為"abcdefg",多元索引中對應列的資料類型為Text且設定分詞器為單字分詞,查詢條件為MatchQuery("abcd")。

解決方案

  • 確保建立多元索引時設定的列名和資料類型與資料表的對應關係正確,寫入資料表中的資料格式與多元索引中的資料類型匹配。更多資訊,請參見資料類型映射數組和巢狀型別
  • 確保資料表中資料已同步到多元索引。
  • 確保使用多元索引時選擇了合適的查詢方式和設定了正確的查詢條件。更多資訊,請參見使用SDK
  • 確保使用了正確的分詞器。更多資訊,請參見分詞