2012-06-14 1 views
2

Je voulais juste savoir. Est-il possible de surligner du texte dans ElasticSearch sur un index avec _source = false? Je veux dire je sais que si ES n'a pas le document, il ne peut pas faire la mise en surbrillance mais est-il un moyen d'utiliser ES comme un moteur de surbrillance au lieu d'un moteur de recherche complet avec des faits saillants? (je fournir le document dans la requête en surbrillance)Utiliser la surbrillance dans ElasticSearch avec _source: false

Merci

Répondre

3

Je ne crois pas qu'il soit possible. Toutefois, vous pouvez utiliser _analyze sur votre requête et votre document de recherche, puis comparer les jetons pour les mettre en surbrillance dans votre code.

Par exemple:

curl -XGET 'localhost:9200/test/_analyze?analyzer=snowball' -d 'some search query keywords' 

{ "jetons": [{ "jeton": "un peu", "start_offset": 0, "end_offset": 4, "type": "", "la position ": 1}, {" token ":" recherche "," start_offset ": 5," end_offset ": 11," type ":" "," position ": 2}, {" token ":" requête "," start_offset ": 12," end_offset ": 17," type ":" "," position ": 3}, {" token ":" mot-clé "," start_offset ": 18," end_offset ": 26," type ": "", "position": 4}]}

boucle -XGET 'localhost: 9200/test/_analyze analyseur = boule de neige?' -d 'document_text de $'

{ "jetons": ..}

Recherchez ensuite les correspondances de jetons dans le document et les décalages devraient vous fournir l'emplacement de surbrillance correct dans le document.

+0

merci je vais essayer –

+0

Pouvez-vous vérifier http://stackoverflow.com/questions/11303660/elasticsearch-edgengram-highlight-term-vector-bad-highlights s'il vous plaît –

+0

je l'ai regardé dans, mais Je n'ai pas assez d'expérience avec l'analyseur NGram, mais vous pouvez demander sur la liste de diffusion elasticsearch. – farid

1
{ 
    "query": { 
    "query_string": { 
     "query": "**", 
     "fields[" 
     sometext "]}}," 
     highlight { 
     "pre_tags": ["<em>"], 
     "post_tags[</em>"], 
     "order": "score", 
     "require_field_match": true, 
     "fields": { 
     "sometext": { 
      "fragment_size": 180, 
      "number_of_fragments": 1 
     } 
     } 
    } 
    } 
+0

nous utilisons la mise en surbrillance car une recherche de requête match_phrase dans le champ content.text prend de 5 à 30 secondes. La récupération de mise en évidence pour le champ content.text prend en moyenne 10 secondes par coup –

Questions connexes