agora-team / elasticsearch-synonymer

 Elasticsearch Synonymer

Byg StatusPyPI Version

dette arkiv indeholder et kurateret datasæt med synonymer i Solr-Format. Dissesynonymer kan bruges til Elasticsearch Synonym Token Filter konfiguration.

yderligere hjælpeværktøjer i dette arkiv:

  • synlint: Commandline værktøj til at fnug og validere synonym filer.
  • synonyms.sublime-syntax: Syntaksfremhævning fil til Sublim tekst 3.

hvis du bruger Elasticssearch med Django, kan du finde dj-elasticsearch-flex nyttigt.

hvorfor?

forsøger at konfigurere synonymer i Elasticsearch, fandt jeg, at docs for det er overraskende spredt.De dokumenter, der er tilgængelige, gør heller ikke meget retfærdighed og går glip af mange hjørnesager.

for eksempel vil en forkert Solr-kortlægning: hello, world, med glæde blive tilføjet i indekskonfiguration.Men så snart du vil forsøge at genåbne indekset, får du en malform_input_exception (diskussionstråd).

dette arkiv løser sådanne problemer ved hjælp af et linter-værktøj, der kan bruges til at validere synonymfilerne på forhånd.

datasæt

synonymfilerne i data/ kan bruges direkte i elasticsearch-konfiguration.

følgende datasæt er i øjeblikket tilgængelige:

  • be-ae: britiske engelske og amerikanske engelske stavemåder. Fra AVKO.org.
  • medical-terms: en Synonym fil med flere medicinske terminologier, forkortelser og opløsning.

Installation

hvis du vil bruge synlint værktøjet, skal du installere pakken fra PIP ved hjælp af:

pip install elasticsearch-synonym-toolkit

Python-pakken er installeret som es_synonyms. Dette vil også installere et linter værktøj,es-synlint. Brug det med:

es-synlint 

anvendelse

i de fleste tilfælde vil du bruge dette modul som en hjælper til at indlæse validerede synonymer fra en fil eller en 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')

konfiguration Synonym Tokenfilter med Elasticsearch DSL Py, er meget let, også:

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

hvis du vil bruge den underliggende linter, kan du importere SynLint klasse.

udvikling

  • klon dette arkiv.
  • installer pakkeafhængigheder via pip med: pip install -r requirements.txt.
  • at køre tests:
./panda test:all

Licens

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.