table des matières
Principe de l'indice sous-jacent ES
Personnalisez les mots d'extension et les mots vides dans IK
Principe de l'indice sous-jacent ES
Tokenizer IK
1. Définition : est de diviser les mots-clés dans un texte
Je suis le camarade de classe de Xiao Ming
Principe de la segmentation des mots: diviser les mots-clés pour supprimer les mots vides et les mots vides
2. Segmentation des mots fournie dans ES
1. L'analyseur standard par défaut analyseur standard Anglais: segmentation de mot Chinois: segmentation de mot à un seul caractère
2. Analyseur simple et simple Anglais: segmentation de mots sans nombres Chinois: pas de segmentation de mots
3. Testez différents tokenizers
GET /_analyzer
{
"analyzer":"simple",
"text":"redis 非常好用 111"
}
- Le résultat de la segmentation standard est: redis est très facile à utiliser 111
- Le résultat d'une simple segmentation de mots est: redis est très facile à utiliser
4.github basé sur le tokenizer IK ES tokenizer
Remarque: l'utilisation du tokenizer IK et de la version ES doit être strictement cohérente
5. Quelle est la différence entre ik_max_word et ik_smart?
- ik_max_word: Le texte sera divisé avec la plus grande granularité , par exemple en divisant "Je suis le camarade de classe de Xiao Ming" en "Je suis le camarade de classe de Xiao Ming", "Je suis", "Je suis Xiao Ming", "Le camarade de classe de Xiao Ming" , "Classmate", épuisera toutes les combinaisons possibles. Je suis le camarade de classe de Xiao Ming
- ik_smart: Fera la division la plus grossière , telle que la division "Je suis le camarade de classe de Xiao Ming" en "Je suis le camarade de classe de Xiao Ming"
PUT /emp
{
"mappings":{
"emp":{
"properties":{
"name":{
"type":"text",
"analyzer":"ik_max_word"
},
"age":{
"type":"integer"
},
"bir":{
"type":"date"
},
"content":{
"type":"text",
"analyzer":"ik_max_word"
},
"address":{
"type":"keyword"
}
}
}
}
}
Personnalisez les mots d'extension et les mots vides dans IK
1. Mots d'extension
Définition: le tokenizer ik existant ne peut pas segmenter ce mot en un mot-clé, mais espère qu'un certain mot deviendra un mot-clé
ik tokenizer, etc. peut être divisé en mots-clés, tels que certains mots en ligne populaires
Configurer le fichier de configuration IK: Le nom dans le répertoire / plugins / ik / config sous le répertoire d'installation ES: IKAnalyzer.cfg.xml
Modifiez le fichier de configuration pour ajouter la configuration suivante:
<! - Les utilisateurs peuvent configurer leur propre dictionnaire étendu ici>
<entry key = "ext_dict"> ext.dic </entry>
2. Arrêter les mots
Définition: le tokenizer ik existant divise un mot-clé en un mot, mais pour une raison quelconque, ce mot ne peut pas apparaître comme mot-clé
<entry key = "ext_stopwords"> stopext.dic </entry>
3. Configurer le dictionnaire d'extension distant
EN 中 Requête
1. Chaîne de requête! Requête de requête DSL
Requête par mot-clé -----> calculer le score, trier, etc. série
2. L'efficacité des requêtes de filtre Quey Filter est relativement élevée
Filtrer les données qui remplissent les conditions --------> Le score du document ne sera pas calculé, trié, couramment utilisé Filtrer automatiquement les résultats de filtrage couramment utilisés
Vous devez utiliser des expressions booléennes pour combiner les deux requêtes
Remarque: lorsque filterQuery et query sont utilisés en combinaison, l'instruction dans fiterQuery est exécutée en premier, puis l'instruction dans query est exécutée
Le filtrage convient pour filtrer les données dans une large plage , tandis que la requête convient pour faire correspondre exactement les données . Dans les applications générales, les données de filtre doivent être utilisées en premier , puis les données de correspondance de requête doivent être utilisées .