agora-team / elasticsearch-synonyms

 Synonymes Elasticsearch

 Statut de construction  Version PyPI

Ce référentiel contient un ensemble de données de synonymes au format Solr. Ces synonymes peuvent être utilisés pour la configuration du filtre de jeton de synonyme Elasticsearch.

Outils d’aide supplémentaires dans ce référentiel:

  • synlint: Outil de ligne de commande pour pelucher et valider les fichiers de synonymes.
  • synonyms.sublime-syntax: Fichier de coloration syntaxique pour Sublime Text 3.

Si vous utilisez Elasticssearch avec Django, vous trouverez peut-être dj-elasticsearch-flex utile.

Pourquoi?

En essayant de configurer des synonymes dans Elasticsearch, j’ai trouvé que les documents pour cela sont étonnamment dispersés.Les documents disponibles ne rendent pas beaucoup de justice non plus et manquent de nombreux cas de coin.

Par exemple, un mappage Solr incorrect : hello, world, serait heureusement ajouté dans la configuration de l’index.Cependant, dès que vous essayez de rouvrir l’index, vous obtenez un malform_input_exception (fil de discussion).

Ce référentiel résout de tels problèmes avec un outil linter qui peut être utilisé pour valider les fichiers de synonymes au préalable.

Jeux de données

Les fichiers de synonymes dans data/ peuvent être utilisés directement dans la configuration d’elasticsearch.

Les jeux de données suivants sont actuellement disponibles:

  • be-ae: Orthographe de l’anglais Britannique et de l’anglais américain. De AVKO.org.
  • medical-terms: Un fichier de synonymes avec plusieurs terminologies médicales, abréviations et résolutions.

Installation

Si vous souhaitez utiliser l’outil synlint, installez le package à partir de PIP en utilisant:

pip install elasticsearch-synonym-toolkit

Le paquet Python est installé en tant que es_synonyms. Cela installera également un outil de linter, es-synlint. Utilisez-le avec:

es-synlint 

Utilisation

Dans la plupart des cas, vous souhaitez utiliser ce module comme aide pour charger des synonymes validés à partir d’un fichier ou d’une URL:

from es_synonyms import load_synonyms# Load synonym file at some URL:be_ae_syns = load_synonyms('https://to.noop.pw/2sI9x4s')# Or, from filesystem:other_syns = load_synonyms('data/be-ae.synonyms')

La configuration de Tokenfilter de synonymes avec Elasticsearch DSL Py est également très facile:

from elasticsearch_dsl import analyzer, token_filterbe_ae_syns = load_synonyms('https://to.noop.pw/2sI9x4s')# Create a tokenfilterbrit_spelling_tokenfilter = token_filter( 'my_tokenfilter', # Any name for the filter 'synonym', # Synonym filter type synonyms=be_ae_syns # Synonyms mapping will be inlined)# Create analyzerbrit_english_analyzer = analyzer( 'my_analyzer', tokenizer='standard', filter=)

Pour utiliser le linter sous-jacent, vous pouvez importer la classe SynLint.

Développement

  • Clonez ce référentiel.
  • Installez les dépendances du paquet via pip avec : pip install -r requirements.txt.
  • Pour exécuter des tests:
./panda test:all

Licence

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.