2017-10-18 7 views
0

j'ai requête simple élastique qui fait une recherche simple champ de texte avec la distance fuziness d'un:ElasticSearch - créer des exceptions pour les termes flous

GET /jobs/_search 
{ 
    "query": { 
    "fuzzy": { 
     "attributes.title": { 
     "value": "C#" 
     "fuzziness": 1 
     } 
    } 
    } 
} 

La requête ci-dessus est exactement ce qu'il est dit de le faire, mais je avoir un cas où je ne veux pas un mot pour résoudre (avec flou) à un autre mot spécifique. Dans ce cas, je ne veux pas que C# renvoie également les résultats C++. De même, je ne veux pas cat pour retourner car résultats.

Cependant, j'ai toujours besoin de l'option de flou si quelqu'un a mal orthographié cat. Dans ce cas, il peut renvoyer les résultats cat et car.

Répondre

1

Je pense que cela est possible avec une combinaison de requête bool, il devrait être lissée comme ceci:

bool: 
    //should 
     //match query without fuzzy 
     //bool 
      //must 
       //must with fuzzy query 
       //must_not with match query 

(Je vais donner u exemple complet plus tard si son pas assez)

+0

Essayer de voir si cette travaux. Je comprends votre approche. Pas besoin d'exemple complet. –

+0

Cette solution fonctionne bien. Bien que j'aurais aimé une approche similaire à la définition des synonymes. Je suppose que ce n'est pas possible :) Merci! –