2016-05-11 4 views
1

Est-il possible de configurer le edgen_n_grams d'Elasticsearch de manière à créer des expressions composées de plusieurs mots lorsque les index ES explorent des données? Je voudrais utiliser ces phrases multi-mots comme suggestions de recherche pour une petite application de recherche que je construis. J'utilise Nutch pour explorer certains sites et utiliser ES pour indexer les données analysées.Création de suggestions de recherche de plusieurs mots

Je pensais que puisque ES peut diviser sur split sur whitespace - que cela ne devrait pas être si difficile ... Cependant, je ne reçois pas les résultats que je m'attendais. Alors maintenant je demande si c'est même possible de faire?

Mon index ES est configuré comme celui-ci

PUT /_template/autocomplete_1 
{ 
    "template": "auto*", 
    "settings": { 
    "index": { 
     "number_of_shards": 1, 
     "number_of_replicas": 1 
    }, 
    "analysis": { 
     "filter": { 
     "autocomplete_filter": { 
      "type": "edge_ngram", 
      "min_gram": "1", 
      "max_gram": "30", 
      "token_chars": ["letter","digit","whitespace"] 
     } 
     }, 
     "analyzer": { 
     "autocomplete_analyzer": { 
      "type": "custom", 
      "tokenizer": "standard", 
      "filter": [ 
      "lowercase", 
      "autocomplete_filter" 
      ]  
      } 
     } 
     } 
    }, 
    "mappings": { 
     "doc": { 
     "_all": { 
      "enabled": false 
     }, 
     "properties": { 
     "anchor": { 
      "type": "string" 
     }, 
     "boost": { 
      "type": "string" 
     }, 
     "content": { 
      "type": "string", 
      "index_analyzer": "autocomplete_analyzer", 
      "search_analyzer": "standard" 
     },... 

"content" est le champ du corps html par Nutch. J'utilise le 'contenu' car je pensais que cela générerait le plus de phrases.

+2

Pour créer des phrases de plusieurs mots, vous avez besoin de [shingles] (https://www.elastic.co/blog/searching-with-shingles), mais je ne suis pas sûr du type de saisie semi-automatique dont vous avez besoin. Avez-vous un exemple de document et un exemple de texte de recherche? –

+0

@AndreiStefan, quelque chose à l'effet de la recherche d'un titre de film comme "le rapide et le furios" ou "fast 5" ou "fast five" et la requête de recherche serait "f" - Je lis sur les bardeaux maintenant – user3125823

+0

@AndreiStefan, je pense que c'est exactement ce que je cherchais! Mettez l'info dans une réponse et je l'accepterai, merci beaucoup. – user3125823

Répondre

1

Pour créer des phrases de plusieurs mots, vous avez besoin de shingles. Plus précisément, this token filter qui peut combiner des jetons.