2017-05-26 22 views
5

का उपयोग कर किसी शब्द में ngram टोकन को हाइलाइट करने के लिए कैसे करें, मैं सिर्फ उन शब्दों को हाइलाइट करना चाहता हूं जो पूरे शब्द से मेल खाते हैं। उदाहरण:लोचदार खोज

term: "Wo" 
highlight should be: "<em>Wo</em>nderfull world!" 
currently it is: "<em>Wonderfull</em> world!" 

मानचित्रण है:

{ 
    "global_search_1495732922733" : { 
    "mappings" : { 
     "meeting" : { 
     "properties" : { 
     ... 
      "name" : { 
      "type" : "text", 
      "analyzer" : "meeteor_index_analyzer", 
      "search_analyzer" : "meeteor_search_term_analyzer" 
      }, 
      ... 
     } 
     } 
    } 
    } 
} 

एनालाइजर हैं:

"analysis" : { 
    "filter" : { 
    "meeteor_stemmer" : { 
     "name" : "english", 
     "type" : "stemmer" 
    }, 
    "meeteor_ngram" : { 
     "type" : "nGram", 
     "min_gram" : "2", 
     "max_gram" : "15" 
    } 
    }, 
    "analyzer" : { 
    "meeteor_search_term_analyzer" : { 
     "filter" : [ 
     "lowercase", 
     "asciifolding" 
     ], 
     "tokenizer" : "standard" 
    }, 
    "meeteor_index_analyzer" : { 
     "filter" : [ 
     "lowercase", 
     "asciifolding", 
     "meeteor_ngram" 
     ], 
     "tokenizer" : "standard" 
    }, 
    "meeteor_project_id_analyzer" : { 
     "tokenizer" : "standard" 
    } 
    } 
}, 

कंक्रीट उदाहरण:

curl -XGET 'localhost:9200/global_search/meeting/_search?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "query": { 
     "match": { 
      "name": "Me" 
     } 
    }, 
    "highlight":{ 
     "fields": { 
     "name": {} 
     } 
    } 
} 
' 

परिणाम है:

"...highlight" : { 
      "name" : [ 
      "Sad <em>Meeting</em>" 
      ] 
     } 
+0

आप वाइल्डकार्ड की कोशिश की है आप कुछ इस तरह कर सकते हैं? जैसे '* मुझे *'? – Montenegrodr

+0

हां लेकिन यह मुद्दा नहीं है। – Boti

+0

मैं एक चरित्र टोकननाइज़र/विश्लेषक के साथ जाने का प्रयास करता हूं, यह सुनिश्चित नहीं करता कि यह संभव है या नहीं। – Montenegrodr

उत्तर

2

सही तरीका प्राप्त करने के लिए आप क्या चाहते हैं tokenizer रूप ngram उपयोग कर रहा है और नहीं फिल्टर

"analysis" : { 
    "filter" : { 
    "meeteor_stemmer" : { 
     "name" : "english", 
     "type" : "stemmer" 
    } 
    }, 
    "tokenizer" : { 
    "meeteor_ngram_tokenizer" : { 
     "type" : "nGram", 
     "min_gram" : "2", 
     "max_gram" : "15" 
    } 
    }, 
    "analyzer" : { 
    "meeteor_search_term_analyzer" : { 
     "filter" : [ 
     "lowercase", 
     "asciifolding" 
     ], 
     "tokenizer" : "standard" 
    }, 
    "meeteor_index_analyzer" : { 
     "filter" : [ 
     "lowercase", 
     "asciifolding" 
     ], 
     "tokenizer" : "meeteor_ngram_tokenizer" 
    }, 
    "meeteor_project_id_analyzer" : { 
     "tokenizer" : "standard" 
    } 
    } 
}, 

यह इस तरह आप के लिए ngram द्वारा हाइलाइटिंग उत्पन्न होगा:

"...highlight" : { 
      "name" : [ 
      "Sad <em>Me</em>eting" 
      ] 
     } 
संबंधित मुद्दे