agora-team / elasticsearch-synonyms
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