Le SDK Tablestore pour Java utilise la requête de correspondance d'expression pour rechercher dans un champ Text en se basant sur l'ordre et la position des jetons. Elle renvoie les lignes satisfaisant la condition de phrase, accompagnées de leur score de pertinence.
Prérequis
Installez le SDK Tablestore pour Java et initialisez le client.
Description de la fonctionnalité
La requête de correspondance d'expression recherche les jetons apparaissant consécutivement, dans l'ordre et aux positions spécifiés, au sein d'un champ Text. Pour plus d'informations sur ce type de champ, consultez Types de chaîne. L'analyseur configuré lors de la création de l'index de recherche analyse la valeur du champ et le texte de la requête. À défaut d'analyseur configuré, la tokenisation par mot unique s'applique par défaut.
Cette requête exige que tous les jetons recherchés apparaissent dans le même ordre et à des positions adjacentes. Par exemple, le texte de requête this is correspond à this is tablestore, mais pas à this table is ni à is this a table. Une requête de correspondance vérifie uniquement la présence des jetons, sans exiger qu'ils soient adjacents ou dans l'ordre de la requête.
Si un champ Text utilise l'analyseur flou, la requête de correspondance d'expression permet une correspondance floue similaire à celle d'une requête avec caractères génériques, mais avec une latence réduite.
L'exemple suivant interroge les lignes dont le champ description contient consécutivement les jetons tablestore et durable dans cet ordre. La requête renvoie jusqu'à 10 lignes, le nombre total de lignes correspondantes et les scores de pertinence.
String tableName = "example_table";
String indexName = "example_index";
MatchPhraseQuery matchPhraseQuery = new MatchPhraseQuery();
matchPhraseQuery.setFieldName("description");
matchPhraseQuery.setText("tablestore durable");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchPhraseQuery);
searchQuery.setSort(new Sort(Collections.singletonList(new ScoreSort())));
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);
SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);
SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
System.out.println(hit.getRow());
System.out.println(hit.getScore());
}
Paramètres
Requête de recherche
L'objet request de type SearchRequest contient les paramètres suivants.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Paramètres de requête
L'objet request.searchQuery de type SearchQuery contient les paramètres suivants.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Condition de correspondance d'expression
L'objet request.searchQuery.query de type MatchPhraseQuery contient les paramètres suivants.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Colonnes renvoyées
L'objet request.columnsToGet de type SearchRequest.ColumnsToGet contient les paramètres suivants.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Valeurs de retour
Réponse de la requête
La méthode search renvoie un objet SearchResponse. Le tableau suivant décrit les principaux champs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Résultat de requête
Chaque élément response.searchHits[] est un objet SearchHit contenant les principaux champs suivants.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|