2017-06-21 63 views
1

如果查詢Brid我想<em>Brid</em>gitte中突出顯示的字段,而不是整個字<em>Bridgitte</em>彈性搜索凸顯,而不是單詞的一部分,整個單詞

我的指數看起來像這樣(我已經添加NGRAM分析儀這裏Highlighting part of word in elasticsearch建議)

{ 
"myindex": { 
    "aliases": {}, 
    "mappings": { 
     "mytype": { 
      "properties": { 
       "myarrayproperty": { 
        "properties": { 
         "mystringproperty1": { 
          "type": "string", 
          "term_vector": "with_positions_offsets", 
          "analyzer": "index_ngram_analyzer", 
          "search_analyzer": "search_term_analyzer" 
         }, 
         "mystringproperty2": { 
          "type": "string", 
          "term_vector": "with_positions_offsets", 
          "analyzer": "index_ngram_analyzer", 
          "search_analyzer": "search_term_analyzer" 
         } 
        }, 
        "mylongproperty": { 
         "type": "long" 
        }, 
        "mydateproperty": { 
         "type": "date", 
         "format": "strict_date_optional_time||epoch_millis" 
        }, 
        "mystringproperty3": { 
         "type": "string", 
         "term_vector": "with_positions_offsets", 
         "analyzer": "index_ngram_analyzer", 
         "search_analyzer": "search_term_analyzer" 
        }, 
        "mystringproperty4": { 
         "type": "string", 
         "term_vector": "with_positions_offsets", 
         "analyzer": "index_ngram_analyzer", 
         "search_analyzer": "search_term_analyzer" 
        } 
       } 
      } 
     }, 
     "settings": { 
      "index": { 
       "creation_date": "1498030893611", 
       "analysis": { 
        "analyzer": { 
         "search_term_analyzer": { 
          "filter": "lowercase", 
          "type": "custom", 
          "tokenizer": "ngram_tokenizer" 
         }, 
         "index_ngram_analyzer": { 
          "filter": ["lowercase"], 
          "type": "custom", 
          "tokenizer": "ngram_tokenizer" 
         } 
        }, 
        "tokenizer": { 
         "ngram_tokenizer": { 
          "token_chars": ["letter", "digit"], 
          "min_gram": "1", 
          "type": "nGram", 
          "max_gram": "15" 
         } 
        } 
       }, 
       "number_of_shards": "5", 
       "number_of_replicas": "1", 
       "uuid": "e5kBX-XRTKOqeAScO1Fs0w", 
       "version": { 
        "created": "2040499" 
       } 
      } 
     }, 
     "warmers": {} 
    } 
} 

}

這是嵌入Elasticsearch情況下,不知道這是否是相關的。

我的查詢看起來像這樣

MatchQueryBuilder queryBuilder = matchPhrasePrefixQuery("_all", query).maxExpansions(50); 
final SearchResponse response = client.prepareSearch("myindex") 
    .setQuery(queryBuilder) 
    .addHighlightedField("mystringproperty3", 0, 0) 
    .addHighlightedField("mystringproperty4", 0, 0) 
    .addHighlightedField("myarrayproperty.mystringproperty1", 0, 0) 
    .setHighlighterRequireFieldMatch(false) 
    .execute().actionGet(); 

而且這是行不通的。我試圖改變查詢queryStringQuery,但它似乎不支持搜索部分的單詞。有什麼建議麼?

回答

1

這是不可能的。彈性搜索可以對單詞進行索引。從標記化的角度來看,你在這裏做不了多少。

您可能需要將包裝器寫在搜索結果上。 (非彈性搜索特定)

相關問題