問題
- Liferay の公式ドキュメントに従って SearchRequestBuilderFactory を使って Search Request を作成した後、Snippet フィールドが返されません。
環境
- DXP 7.4
解像度
- 要約を得るために、以下のコードが https://help.liferay.com/hc/en-us/articles/360032611211-Returning-Results#creating-a-results-summaryによって提案されている:
Summary summary = new Summary(
document.get(prefix + titleField, titleField),
document.get(prefix + contentField, contentField));
Here, the prefix is :-
String prefix = Field.SNIPPET + StringPool.UNDERLINE;
- https://learn.liferay.com/w/dxp/using-search/search-pages-and-widgets/search-results/search-results#result-summaries.
- コードは次のようになる:
...
SearchResponse searchResponse = searcher.search(searchRequest);
SearchHits searchHits = searchResponse.getSearchHits();
List<SearchHit> searchHitsList = searchHits.getSearchHits();
for (SearchHit hit : searchHitsList) {
Document document = hit.getDocument();
...
- しかし、この目標を達成するためには、 SearchResponse関数 getDocuments71()を使用しなければならない。 この関数は、スニペットタイトルフィールドとスニペットコンテンツフィールドを含むドキュメントのリストを返します。 以下のコード例が参考になるだろう:
...
SearchResponse searchResponse = searcher.search(searchRequest);
List<Document> documents = searchResponse.getDocuments71();
for (Document document : documents) {
...