2013-05-07 2 views
1

Mon objectif est d'appliquer le coup de pouce au champ « name » (voir exemple ci-dessous), mais j'ai deux problèmes quand je recherche « john »:Comment améliorer certains champs par rapport à d'autres dans elasticsearch?

  1. recherche est également correspondant {name: "dany", message: "hi bob"} lorsque le nom est « dany » et
  2. recherche ne stimulons nom sur un message (lignes avec name = "john" devrait être sur le dessus)

l'essentiel est https://gist.github.com/tomaspet262/5535774

(depuis fo de stackoverflow rm submit a renvoyé "Votre message semble contenir du code qui n'est pas correctement formaté en tant que code", qui a été formaté correctement).

+0

édité pour contenir des graduations (c'est-à-dire '' ') pour formater correctement le code –

Répondre

0

Je suggère d'utiliser l'augmentation du temps de requête au lieu de l'augmentation du temps d'indexation.

#DELETE 
curl -XDELETE 'http://localhost:9200/test' 
echo 
# CREATE 
curl -XPUT 'http://localhost:9200/test?pretty=1' -d '{ 
    "settings": { 
     "analysis" : { 
      "analyzer" : { 
       "my_analyz_1" : { 
        "filter" : [ 
         "standard", 
         "lowercase", 
         "asciifolding" 
        ], 
        "type" : "custom", 
        "tokenizer" : "standard" 
       } 
      } 
     } 
    } 
}' 
echo 
# DEFINE 
curl -XPUT 'http://localhost:9200/test/posts/_mapping?pretty=1' -d '{ 
    "posts" : { 
     "properties" : { 
      "name" : { 
       "type" : "string", 
       "analyzer" : "my_analyz_1" 
      }, 
      "message" : { 
       "type" : "string", 
       "analyzer" : "my_analyz_1" 
      } 
     } 
    } 
}' 
echo 
# INSERT 
curl localhost:9200/test/posts/1 -d '{name: "john", message: "hi john"}' 
curl localhost:9200/test/posts/2 -d '{name: "bob", message: "hi john, how are you?"}' 
curl localhost:9200/test/posts/3 -d '{name: "john", message: "bob?"}' 
curl localhost:9200/test/posts/4 -d '{name: "dany", message: "hi bob"}' 
curl localhost:9200/test/posts/5 -d '{name: "dany", message: "hi john"}' 
echo 
# REFRESH 
curl -XPOST localhost:9200/test/_refresh 
echo 
# SEARCH 
curl "localhost:9200/test/posts/_search?pretty=1" -d '{ 
    "query": { 
     "multi_match": { 
      "query": "john", 
      "fields": ["name^2", "message"] 
     } 
    } 
}' 
+0

Merci beaucoup! Cela fonctionne comme par magie :). – Tomas

0

Je ne suis pas sûr si cela est pertinent dans ce cas, mais lors des tests avec ces petites quantités de données, j'utilise toujours 1 tesson au lieu de paramètres par défaut pour assurer aucun problème en raison de calcul distribué.

Questions connexes