Question

Au début, j'utilisais l'analaiseur "Analyseur de langue" et tout semblait très bien fonctionner.Jusqu'à ce que je réalise que "A" ne fait pas partie de la liste des mots stops en français

J'ai donc décidé de tester avec une boule de neige.Cela semblait aussi bien fonctionner, mais dans ce cas, il élimine le mot court comme "L '", "D" ", ...

D'où ma question: comment utiliser Snowball, garder les filtres par défaut et ajouter une liste de mots stops et élision?

Sinon, comment changer la liste des mots stops pour anal user "analyseur de langue"?

Et une dernière question: Est-il vraiment intéressant d'utiliser la boule de neige plutôt que l'analaiseur "analyseur de langue"?Est-ce plus rapide?plus pertinent?

merci

Était-ce utile?

La solution

Étant donné qu'un analyseur est simplement la combinaison d'un tokénisateur et de zéro ou plus de filtres, vous pouvez créer votre propre analyseur de boule de neige personnalisé, qui imite les "défauts" et ajoute sur le haut de vos propres filtres, tels qu'un filtre de jeton d'élection .

Comme indiqué dans le Documentation de l'analyseur de boule de neige < / a>:

Analyseur de boules de neige de type qui utilise le tokéniseur standard , avec filtre standard , Filtre minuscule , Filtre d'arrêt , et filtre de boule de neige .

Voici un exemple qui contient à la fois des implémentations, un Snowball Analyzer avec des filtres par défaut, des mots stops personnalisés et de l'élision et un analyseur de langue with une liste personnalisée des mots stops :

{
  "settings": {
    "analysis": {
      "analyzer": {
       "custom_snowball_analyzer": {
          "tokenizer": "standard",
          "filter": [
            "standard",
            "lowercase",
            "stop",
            "snowball",
            "custom_stop",
            "custom_elision"
          ]
        },
        "custom_language_analyzer": {
          "type": "french",
          "stopwords": ["a", "à", "t"]
        }
      },
      "filter": {
        "custom_stop": {
          "type": "stop",
          "stopwords": ["a", "à", "t"]
        },
        "custom_elision": {
          "type": "elision",
          "articles": ["l", "m", "t", "qu", "n", "s", "j"]
        }
      }
    }
  }
}

Voyons les jetons produits par les deux analyseurs, en utilisant la même phrase de test:

curl -sXGET 'http://localhost:9200/testing/_analyze?analyzer=custom_snowball_analyzer&pretty' -d "Il a de la chance, parait-t-il que l'amour est dans le pré, mais au final à quoi bon ?." | grep token
  "tokens" : [ {
    "token" : "il",
    "token" : "de",
    "token" : "la",
    "token" : "chanc",
    "token" : "parait",
    "token" : "il",
    "token" : "que",
    "token" : "amour",
    "token" : "est",
    "token" : "dan",
    "token" : "le",
    "token" : "pré",
    "token" : "mai",
    "token" : "au",
    "token" : "final",
    "token" : "quoi",
    "token" : "bon",

curl -sXGET 'http://localhost:9200/testing/_analyze?analyzer=custom_language_analyzer&pretty' -d "Il a de la chance, parait-t-il que l'amour est dans le pré, mais au final à quoi bon ?." | grep token
  "tokens" : [ {
    "token" : "il",
    "token" : "de",
    "token" : "la",
    "token" : "chanc",
    "token" : "parait",
    "token" : "il",
    "token" : "que",
    "token" : "amou",
    "token" : "est",
    "token" : "dan",
    "token" : "le",
    "token" : "pré",
    "token" : "mai",
    "token" : "au",
    "token" : "final",
    "token" : "quoi",
    "token" : "bon",

Comme vous pouvez le constater, les deux analyseurs produisent presque les mêmes jetons, à l'exception de "Amour" , qui n'a pas été tirée, je ne sais pas pourquoi être honnête, depuis le filtre de la boule de neige utilise une timmer sous la hotte.

À propos de votre deuxième question, ces filtres n'affectent que l'heure d'indexation (pendant l'étape de la tokénisation), je dirais que les deux implémentations effectueront presque égales (l'analyseur de langue devrait être légèrement plus rapide car il ne tige que des mots français dans cet exemple) Et ne sera pas perceptible à moins que vous prévoyez d'indexer des documents énormes sous une forte charge.

Les temps de réponse de recherche doivent être similaires car les jetons sont presque les mêmes (si vous indexez uniquement les documents français), je pense donc que Lucene fournira les mêmes performances.

Pour conclure, je choisirais l'analyseur de langue si vous indexez uniquement les documents français, car il est beaucoup plus petit dans la définition de mappage: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top