agora-team / elasticsearch-Synonyme

Elasticsearch-Synonyme

 Build-StatusPyPI-Version

Dieses Repository enthält einen kuratierten Datensatz von Synonymen im Solr-Format. Thesesynonyms kann für die Konfiguration des Elasticsearch-Synonym-Token-Filters verwendet werden.

Zusätzliche Hilfsprogramme in diesem Repository:

  • synlint: Kommandozeilen-Tool zum Flusen und Validieren der Synonym-Dateien.
  • synonyms.sublime-syntax: Syntaxhervorhebungsdatei für Sublime Text 3.

Wenn Sie Elasticssearch mit Django verwenden, können Sie dj-elasticsearch-flex nützlich finden.

Warum?

Beim Versuch, Synonyme in Elasticsearch zu konfigurieren, stellte ich fest, dass die Dokumente dafür überraschend verstreut sind.Die verfügbaren Dokumente werden auch nicht viel gerecht und verpassen viele Eckfälle.

Zum Beispiel würde eine falsche Solr-Zuordnung: hello, world, gerne in der Indexkonfiguration hinzugefügt.Sobald Sie jedoch versuchen, den Index erneut zu öffnen, erhalten Sie einen malform_input_exception (Diskussionsthread).

Dieses Repository löst solche Probleme mit einem Linter-Tool, mit dem die Synonym-Dateien vorab validiert werden können.

Datensätze

Die Synonym-Dateien in data/ können direkt in der elasticsearch-Konfiguration verwendet werden.

Folgende Datensätze sind aktuell verfügbar:

  • be-ae: Britisches Englisch und amerikanisches Englisch Schreibweisen. Von AVKO.org.
  • medical-terms: Eine Synonym-Datei mit mehreren medizinischen Terminologien, Abkürzungen und Auflösung.

Installation

Wenn Sie das synlint -Tool verwenden möchten, installieren Sie das Paket von PIP mit:

pip install elasticsearch-synonym-toolkit

Das Python-Paket wird als es_synonyms installiert. Dies wird auch ein Linter-Tool installieren,es-synlint. Verwenden Sie es mit:

es-synlint 

Verwendung

In den meisten Fällen möchten Sie dieses Modul als Helfer zum Laden validierter Synonyme aus einer Datei oder einer URL verwenden:

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')

Die Konfiguration von Synonym Tokenfilter mit Elasticsearch DSL Py ist ebenfalls sehr einfach:

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=)

Um den zugrunde liegenden Linter zu verwenden, können Sie die Klasse SynLint importieren.

Entwicklung

  • Klonen Sie dieses Repository.
  • Installieren Sie Paketabhängigkeiten über pip mit: pip install -r requirements.txt.
  • Zum Ausführen von Tests:
./panda test:all

Lizenz

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.