簡體   English   中英

Java Elastic Search:熒光筆不起作用

[英]Java Elastic Search: Highlighter not working

我將Java API用於ElasticSearch。 我正在嘗試突出顯示我的領域,但是它不起作用。 系統會返回與搜索字詞匹配的正確結果,因此需要突出顯示內容,但是根本不會這樣做。 我將我的SearchResponse和HighlightBuilder設置如下:

    QueryBuilder matchQuery = simpleQueryStringQuery(searchTerm);
    ...
    HighlightBuilder highlightBuilder = new HighlightBuilder()
            .postTags("<highlight>")
            .preTags("</highlight>")
            .field("description");

    SearchResponse response = client.prepareSearch("mediaitems")
            .setTypes("mediaitem")
            .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
            .setQuery(matchQuery)                 // Query
            .setFrom(from)
            .setSize(pageSize)
            .setExplain(true)
            .highlighter(highlightBuilder)
            .get();

然后在我的JSON-> POJO代碼中,檢查以查看突出顯示了哪些字段,但是返回的Map為空。

    Arrays.stream(hits).forEach((SearchHit hit) -> {
        String source = hit.getSourceAsString();
        Map<String, HighlightField> highlightFields = hit.getHighlightFields();
        try {
            MediaItem mediaItem = objectMapper.readValue(source, MediaItem.class);
            mediaItemList.add(mediaItem);
        } catch (IOException e) {
            e.printStackTrace();
        }
    });

為什么我的突出顯示要求被忽略了?

任何幫助是極大的贊賞。

您必須在HighlightBuilder中設置突出顯示的字段。

例如:

HighlightBuilder.Field field = new HighlightBuilder.Field(fieldName);
highlightBuilder.field(field);

我看到您正在使用簡單的查詢字符串查詢,因此您可以執行以下操作:

Your query string: fieldname: searched text

因此,例如,您的查詢字符串如下:

price: >2000 && city: Manchaster

使用此查詢字符串,您也可以在查詢中指定字段。 現在熒光筆應該可以工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM