Java için Tablestore SDK ile özet ve vurgulama özelliğini kullanarak eşleşen terimleri içeren Text alanlarından parçalar döndürün ve bu terimleri yapılandırılan etiketlerle işaretleyin.
Önkoşullar
Java için Tablestore SDK öğesini yükleyin ve bir istemci başlatın.
Özellik açıklaması
Özet ve vurgulama özelliği, bir sorgu tarafından eşleştirilen terimlerin etrafındaki metin parçalarını ayıklar ve eşleşen terimleri ön etiketler ile arka etiketler arasına alır. Sorgu eşleşmelerinin bağlamını görüntülemek için bu parçaları kullanabilirsiniz. Bu özellik yalnızca Text alanlarını destekler.
Özet ve vurgulama özelliğini kullanmadan önce, bir arama dizini oluştururken alan için enableHighlighting parametresini true olarak ayarlayın. Bir sorguda, döndürmek istediğiniz parçaların alanlarını ve parça ayarlarını belirtmek için SearchQuery.highlight öğesini kullanın. Alan, özet ve vurgulamayı destekleyen bir sorgu koşulunda kullanılmalıdır. Aksi takdirde, alan için vurgulanmış parçalar döndürülmez.
Aşağıdaki sorgu türleri özet ve vurgulama sonuçlarını döndürebilir: TermQuery, TermsQuery, MatchQuery, MatchPhraseQuery, PrefixQuery, WildcardQuery, RangeQuery, BoolQuery, ConstScoreQuery ve NestedQuery.
Bir BoolQuery veya ConstScoreQuery için, yukarıdaki yedi sorgu türünün alt sorguları tarafından kullanılan alanlar için özet ve vurgulamayı yapılandırabilirsiniz. Bir NestedQuery için, eşleşen alt satırlar için özet ve vurgulama sonuçlarını döndürmek üzere InnerHits.highlight öğesini yapılandırın. Daha fazla bilgi için bkz. İç içe geçmiş sorgu.
MatchQueryveyaMatchPhraseQuerykullanıyorsanız, eşleşen bir terim birden fazla ön etiket ve arka etiket çiftiyle çevrilebilir.Bir
Textalanı için maksimum anlamsal belirteçleştirme kullanılıyorsa,MatchPhraseQueryözet ve vurgulamayı desteklemez.Bir parça sınırı eşleşen bir terimi bölebilir. Bu durumda terim vurgulanmaz.
Aşağıdaki örnek, description alanında tablestore terimini içeren satırları almak için bir eşleşme sorgusu kullanır. Örnek, döndürülen parçalardaki eşleşen terimleri <b> ve </b> etiketleriyle çevreler. description alanı, özet ve vurgulamanın etkinleştirildiği bir Text alanıdır.
String tableName = "example_table";
String indexName = "example_index";
MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore");
HighlightParameter highlightParameter = new HighlightParameter();
highlightParameter.setPreTag("<b>");
highlightParameter.setPostTag("</b>");
Highlight highlight = new Highlight();
highlight.addFieldHighlightParam("description", highlightParameter);
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);
searchQuery.setHighlight(highlight);
searchQuery.setLimit(10);
SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
HighlightResultItem resultItem = hit.getHighlightResultItem();
if (resultItem == null) {
continue;
}
HighlightField field = resultItem.getHighlightFieldByName("description");
if (field != null) {
System.out.println(field.getFragments());
}
}
Parametreler
request.searchQuery.highlight öğesi Highlight türündedir. fieldHighlightParams içindeki değerler, tek tek alanlar için parça davranışını yapılandıran HighlightParameter nesneleridir.
Aşağıdaki tabloda iki yapılandırma düzeyi olan Highlight ve HighlightParameter tam parametre yolları kullanılarak açıklanmaktadır.
|
Ad |
Tür |
Açıklama |
|
fieldHighlightParams (gerekli) |
|
Alan adları ve parça ayarları. Anahtar, özet ve vurgulama sonuçlarını döndürmek istediğiniz bir alanın adıdır. Değeri, alan için |
|
highlightEncoder (isteğe bağlı) |
HighlightEncoder |
Vurgulanmış parçalardaki orijinal metin için kodlama yöntemi. Geçerli değerler:
|
|
fieldHighlightParams[].numberOfFragments (isteğe bağlı) |
Integer |
Bir alan için döndürülecek maksimum vurgulanmış parça sayısı. Bu parametreyi |
|
fieldHighlightParams[].fragmentSize (isteğe bağlı) |
Integer |
Her bir parçanın hedef uzunluğu. Varsayılan değer |
|
fieldHighlightParams[].preTag (isteğe bağlı) |
String |
Eşleşen bir terim için ön etiket. Varsayılan değer |
|
fieldHighlightParams[].postTag (isteğe bağlı) |
String |
Eşleşen bir terim için arka etiket. Varsayılan değer |
|
fieldHighlightParams[].highlightFragmentOrder (isteğe bağlı) |
HighlightFragmentOrder |
Birden fazla vurgulanmış parçanın döndürülme sırası. |
Yanıt
Sorgu yanıtı
search yöntemi bir SearchResponse nesnesi döndürür. Aşağıdaki alanlar özet ve vurgulama ile ilgilidir.
|
|
|
|
|
|
|
|
|
|
|
|
Sorgu eşleşmesi
response.searchHits[] öğesi SearchHit türündedir. Aşağıdaki alanlar özet ve vurgulama ile ilgilidir.
|
|
|
|
|
|
|
|
|
|
|
|
Vurgulama sonucu
response.searchHits[].highlightResultItem öğesi HighlightResultItem türündedir ve aşağıdaki alanı içerir.
|
|
|
|
|
|
|
|
Alan parçaları
response.searchHits[].highlightResultItem.highlightFields[fieldName] öğesi HighlightField türündedir ve aşağıdaki alanı içerir.
|
|
|
|
|
|
|
|