agora-csapat / elasticsearch-Szinonímák
ez az adattár tartalmaz egy kurátora adathalmaz szinonimák Solr formátumban. Ezek a szinonímák használhatók az Elasticsearch Szinonima Token szűrő konfigurációjához.
további segítő eszközök ebben az adattárban:
-
synlint
: parancssori eszköz a szinonima fájlok szöszöléséhez és érvényesítéséhez. -
synonyms.sublime-syntax
: Szintaxiskiemelő fájl a fenséges szöveghez 3.
ha az Elasticssearch-et használja a Django-val, akkor a dj-elasticsearch-flex
hasznos lehet.
miért?
az Elasticsearch szinonimáinak konfigurálása során azt tapasztaltam, hogy a hozzá tartozó dokumentumok meglepően szétszórtak.A rendelkezésre álló dokumentumok sem sok igazságot tesznek, és sok sarok esetet kihagynak.
például egy helytelen Solr leképezés: hello, world,
boldogan hozzáadódik az index konfigurációhoz.Azonban, amint megpróbálja újra megnyitni az indexet, akkor kap egy malform_input_exception
(vita szál).
ez az adattár megoldja ezeket a problémákat egy linter eszközzel, amely felhasználható a synonymfiles előzetes érvényesítésére.
adatkészletek
a data/
szinonimafájljai közvetlenül használhatók az elasticsearch konfigurációban.
jelenleg a következő adatkészletek állnak rendelkezésre:
-
be-ae
: Brit angol és Amerikai Angol helyesírások. Tól től AVKO.org. -
medical-terms
: szinonim fájl több orvosi terminológiával, rövidítéssel és felbontással.
telepítés
ha a synlint
eszközt szeretné használni, Telepítse a csomagot a PIP segítségével:
pip install elasticsearch-synonym-toolkit
a Python csomag es_synonyms
néven van telepítve. Ez egy linter eszközt is telepít,es-synlint
. Használja azt:
es-synlint
használat
a legtöbb esetben ezt a modult segítőként szeretné használni az érvényesített szinonimák fájlból vagy url-ből történő betöltéséhez:
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')
konfigurálása szinonimája Tokenfilter a Elasticsearch DSL Py, nagyon egyszerű, is:
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=)
az alapul szolgáló linter használatához importálhatja a SynLint
osztályt.
fejlesztés
- klónozza ezt az adattárat.
- telepítse a csomagfüggőségeket a
pip
segítségével:pip install -r requirements.txt
. - tesztek futtatásához:
./panda test:all