Recherche exacte
J'utilise elasticsearch et je suis d'avoir un diable de temps à obtenir une correspondance exacte à se produire. J'ai essayé différentes combinaisons de match, query_string, etc, et soit je ne reçois rien ou de mauvais résultats.
Requête ressemble à ceci:
{
"filter": {
"term": {
"term": "dog",
"type": "main"
}
},
"query": {
"match_phrase": {
"term": "Dog"
}
},
"sort": [
"_score"
]
}
Triés résultats
10.102211 {u'term': u'The Dog', u'type': u'main', u'conceptid': 7730506}
10.102211 {u'term': u'That Dog', u'type': u'main', u'conceptid': 4345664}
10.102211 {u'term': u'Dog', u'type': u'main', u'conceptid': 144}
7.147442 {u'term': u'Dog Eat Dog (song)', u'type': u'main', u'conceptid': u'5288184'}
Je vois, bien sûr, que "Le Chien", "Le Chien" et "Chien" tous ont le même score, mais j'ai besoin de comprendre comment je peut stimuler la correspondance exacte "Chien" dans la partition.
J'ai aussi essayé
{
"sort": [
"_score"
],
"query": {
"bool": {
"must": [
{
"match": {
"term": "Dog"
}
},
{
"match_phrase": {
"term": {
"query": "Dog",
"boost": 5
}
}
}
]
}
},
"filter": {
"term": {
"term": "dog",
"type": "main"
}
}
}
mais ça ne me donne juste
11.887239 {u'term': u'The Dog', u'type': u'main', u'conceptid': 7730506}
11.887239 {u'term': u'That Dog', u'type': u'main', u'conceptid': 4345664}
11.887239 {u'term': u'Dog', u'type': u'main', u'conceptid': 144}
8.410372 {u'term': u'Dog Eat Dog (song)', u'type': u'main', u'conceptid': u'5288184'}
source d'informationauteur Josh Harrison
Vous devez vous connecter pour publier un commentaire.
Champs sont analysés à l'aide de l'analyseur standard par défaut. Si vous souhaitez vérifier la correspondance exacte, vous pouvez stocker votre champ de ne pas analyser aussi e.g:
Ensuite, vous pouvez interroger le chien-champ pour les correspondances exactes, et le chien._tokenized pour analysé les requêtes (comme fulltext)
Je pense que votre problème est le champ
term
est en cours d'analyse (vérifiez votre correspondance avec l'analyseur standard et filtrage des mots vides commethe
outhat
. Pour cette raison, vous obtenez le même score pourDog
etThe Dog
. Alors peut-être vous pouvez résoudre votre problème par la configuration d'un analyseur personnalisé => page de documentationDe hachage deux de la valeur dont vous avez besoin pour la recherche en touche dièse, puis sur rechercher.