agora-team / elasticsearch-synonimy
to repozytorium zawiera wyselekcjonowany zbiór danych synonimów w formacie Solr. Teesynonimy mogą być używane do konfiguracji filtra symboli Elasticsearch.
dodatkowe narzędzia pomocnicze w tym repozytorium:
-
synlint
: narzędzie wiersza poleceń do lintowania i sprawdzania poprawności plików synonimów. -
synonyms.sublime-syntax
: Plik podświetlania składni dla Sublime Text 3.
jeśli używasz Elasticssearch z Django, możesz znaleźć dj-elasticsearch-flex
przydatne.
dlaczego?
próbując skonfigurować synonimy w Elasticsearch, zauważyłem, że dokumenty dla niego są zaskakująco rozproszone.Dokumenty, które są dostępne, również nie robią wiele sprawiedliwości i pomijają wiele narożnych przypadków.
na przykład, niepoprawne mapowanie Solr: hello, world,
byłoby szczęśliwie dodane w konfiguracji indeksu.Jednak, gdy tylko spróbujesz ponownie otworzyć indeks, otrzymasz malform_input_exception
(wątek dyskusji).
to repozytorium rozwiązuje takie problemy za pomocą narzędzia linter, które może być użyte do uprzedniej walidacji plików synonimów.
Datasets
pliki synonimów w data/
mogą być używane bezpośrednio w konfiguracji elasticsearch.
obecnie dostępne są następujące zbiory danych:
-
be-ae
: Brytyjski angielski i amerykański angielski pisowni. Od AVKO.org. -
medical-terms
: plik synonimów z kilkoma Terminologiami medycznymi, skrótami i rozwiązaniami.
instalacja
jeśli chcesz użyć narzędzia synlint
, zainstaluj pakiet z PIP za pomocą:
pip install elasticsearch-synonym-toolkit
pakiet Pythona jest instalowany jako es_synonyms
. Spowoduje to również zainstalowanie narzędzia linter,es-synlint
. Użyj go z:
es-synlint
użycie
w większości przypadków warto użyć tego modułu jako pomocnika do ładowania sprawdzonych synonimów z pliku lub adresu 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')
Konfigurowanie synonimu Tokenfilter z Elasticsearch DSL Py jest również bardzo proste:
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=)
aby użyć lintera bazowego, możesz zaimportować klasę SynLint
.
rozwój
- Sklonuj to repozytorium.
- zainstaluj zależności pakietów przez
pip
za pomocą:pip install -r requirements.txt
. - aby uruchomić testy:
./panda test:all