[ES] de la différence entre le terme et correspondance

termusage

Regardez d'abord la définition du terme, terme nom correspondance exacte, qui est la dernière requête, les termes de recherche ne sera pas démontée avant la recherche de mots.

On décrira ici à titre d'exemple, pour stocker certaines données:

{
     "Title": " l' amour de la Chine" ,
     "content": " Les gens aiment bien la Chine" ,
     "tags": [ " La Chine", "amour" ] 
} 
{
     "title": "amour HuBei" ,
     "content": " les gens aiment très « HuBei ,
     "tags": [ "HuBei", "amour" ] 
}

Pour utiliser term la requête suivante:

{
   "Requête" : {
     "terme" : {
       "title": "amour" 
    } 
  } 
}

En conséquence, les deux données ci-dessus peuvent être demandées:

{
   "A": 1 ,
   "timed_out": faux ,
   "_Les éclats" : {
     "total": 5 ,
     " avec succès": 5 ,
     "sauté": 0 ,
     " a échoué": 0 
  },
   "hits" : {
     « totale « 2 ,
     "max_score": 0,6931472 ,
     "hits" : [ 
      {
         "_index": "test" ,
         "_type": "doc" ,
         "_id": "8" ,
         "_SCORE": 0,6931472 ,
        "_Source" : {
           "title": "amour HuBei" ,
          "content": " Les gens aiment très HuBei" ,
           "tags": [ "HuBei", "amour" ] 
        } 
      }, 
      {
         "_index": "test" ,
         "_type": "doc" ,
         "_id": « 7 " "_SCORE": 0.6931472 ,
         "_Source" : {
           "title": " l' amour de la Chine" ,
           "content": " les gens aiment bien la Chine" ,
           "tags": [" La Chine », "amour"] 
        } 
      } 
    ] 
  } 
}

Découverte, mots - clés de titre liés à l' amour dans tout vérifié, mais je veux juste une correspondance exacte  love Chinacela, voir si vous pouvez consulter le texte suivant:

{
   "Requête" : {
     "terme" : {
       "title": " l' amour de la Chine" 
    } 
  } 
}

Exécution n'a été trouvé aucune donnée , Conceptuellement, terme appartient à une correspondance exacte ne peut vérifier un seul mot. Je voudrais terme correspondre à plusieurs mots , comment faire? Peut être utilisé termspour:

{
   "Requête" : {
     "termes" : {
       "title": [ "amour", " La Chine" ] 
    } 
  } 
}

Résultats de la requête:

{
   "A": 1 ,
   "timed_out": faux ,
   "_Les éclats" : {
     "total": 5 ,
     " avec succès": 5 ,
     "sauté": 0 ,
     " a échoué": 0 
  },
   "hits" : {
     « totale « 2 ,
     "max_score": 0,6931472 ,
     "hits" : [ 
      {
         "_index": "test" ,
         "_type": "doc" ,
         "_id": "8" ,
         "_SCORE": 0,6931472 ,
        "_Source" : {
           "title": "amour HuBei" ,
          "content": " Les gens aiment très HuBei" ,
           "tags": [ "HuBei", "amour" ] 
        } 
      }, 
      {
         "_index": "test" ,
         "_type": "doc" ,
         "_id": « 7 " "_SCORE": 0.6931472 ,
         "_Source" : {
           "title": " l' amour de la Chine" ,
           "content": " les gens aiment bien la Chine" ,
           "tags": [" La Chine », "amour"] 
        } 
      } 
    ] 
  } 
}

Toutes les enquêtes ont découvert, et pourquoi? Car en termes de [ ] plus ou d'une relation est, aussi longtemps que l' un mot là - dessus. Voulez - vous rencontrer un préavis de deux mots, vous devez utiliser le bool doit faire, comme suit:

{
   "Requête" : {
     "bool" : {
       "must" : [ 
        {
           "terme" : {
             "title": "amour" 
          } 
        }, 
        {
           "terme" : {
             "title": "Chine" 
          } 
        } 
      ] 
    } 
  } 
}
Vous pouvez le voir, nous avons utilisé ci - dessus china est en minuscule. Lors de l' utilisation des majuscules China lorsque nous avons cherché et trouvé aucune information trouvée. C'est pourquoi? Lorsque le titre de mot au cours du stockage, a mené un processus de segmentation. Nous utilisons ici est le mot par défaut du processeur , un traitement de texte. Nous pouvons voir comment le traitement de texte?

traitement de texte

Test GET / _analyze
 {
   "texte": " l' amour de la Chine" 
}

Les résultats sont les suivants:

{
   "Jetons" : [ 
    {
       "jeton": "amour" ,
       "start_offset": 0 ,
       "end_offset": 4 ,
       "type": "<ALPHANUM>" ,
       "position": 0 
    }, 
    {
       "jeton": " chine » ,
       "start_offset": 5 ,
       "end_offset": 10 ,
       "type": "<ALPHANUM>" ,
       "position": 1 
    } 
  ] 
}

Pour l' analyse loveet chinales deux mots. Le termseul compte complet du mot correspondant ci - dessus, ne correspond pas à tout changement. Nous utilisons Donc de Chinatelle sorte que lorsque la requête échouera. Plus tard , il y aura un mot consacré breaker.

match usage

Première utilisation love Chinade match.

GET test / doc / _search 
{
   "requête" : {
     "match" : {
       "title": " l' amour de la Chine" 
    } 
  } 
}

Le résultat est le suivant:

{
   "A": 1 ,
   "timed_out": faux ,
   "_Les éclats" : {
     "total": 5 ,
     " avec succès": 5 ,
     "sauté": 0 ,
     " a échoué": 0 
  },
   "hits" : {
     « totale « 2 ,
     "max_score": 1,3862944 ,
     "hits" : [ 
      {
         "_index": "test" ,
         "_type": "doc" ,
         "_id": "7" ,
         "_SCORE": 1,3862944 ,
        "_Source" : {
           "title": " l' amour de la Chine" ,
          "content": " Les gens aiment bien la Chine" ,
           "tags" : [
             " La Chine" ,
             "amour" 
          ] 
        } 
      }, 
      {
         "_index": "test" ,
         "_type": "doc" ,
         "_id": « 8 " ,
         "_SCORE": 0.6931472 ,
         "_Source" : {
           "title": "amour HuBei" ,
           "content": " les gens aiment très HuBei" ,
           "tags" :
            [ "HuBei" ,
             "amour" 
          ] 
        }  
      }
    ] 
  } 
}

Constaté que les deux vérifier, et pourquoi? Parce que le match lors de la recherche, procédera à une scission mot, Chai Wan, correspondant à nouveau au - dessus de deux éléments, leur entrée titre est: love china hubeinous cherchons love Chinanotre mot pour obtenir un traitement love china, et la relation d'appartenance ou tant que l'une des entrées , il sera en mesure d'égaler. Si vous voulez loveet Chinaen même temps de faire correspondre des mots, comment faire? utilisationmatch_phrase

match_phrase usage

match_phrase Appelée phrase recherche, exige que tous les mots doivent figurer dans le document en même temps, doit être proche du même endroit en même temps.

Test GET / doc / _search 
{
   "requête" : {
     "match_phrase" : {
       "title": " La Chine d'amour" 
    } 
  } 
}

Les résultats sont les suivants:

{
   "A": 5 ,
   "timed_out": faux ,
   "_Les éclats" : {
     "total": 5 ,
     " avec succès": 5 ,
     "sauté": 0 ,
     " a échoué": 0 
  },
   "hits" : {
     « totale « : 1 ,
     "max_score": 1,3862944 ,
     "hits" : [ 
      {
         "_index": "test" ,
         "_type": "doc" ,
         "_id": "7" ,
         "_SCORE": 1,3862944 ,
        "_Source" : {
           "title": " l' amour de la Chine" ,
          "content": " Les gens aiment bien la Chine" ,
           "tags" : [
             " La Chine" ,
             "amour" 
          ] 
        } 
      } 
    ] 
  } 
}

 

 

Je suppose que tu aimes

Origine www.cnblogs.com/weknow619/p/ES.html
conseillé
Classement