agora-team/elasticsearch-synonymes

Elasticsearchシノニム

ビルドステータスPyPIバージョン

このリポジトリには、Solr形式の同義語のキュレーションされたデータセットが含まれています。 これらのシノニムは、Elasticsearchのシノニムトークンフィルタ設定に使用できます。

このリポジトリ内の追加のヘルパーツール:

  • synlint: synonymファイルをlintして検証するコマンドラインツール。
  • synonyms.sublime-syntax: Sublime Textの構文強調表示ファイル3.

DjangoでElasticsearchを使用している場合は、dj-elasticsearch-flexが役に立つかもしれません。

なぜ?

Elasticsearchで同義語を設定しようとすると、そのドキュメントが驚くほど散在していることがわかりました。利用可能なドキュメントは、どちらか多くの正義を行うと、多くのコーナーケースを逃していません。

たとえば、誤ったSolrマッピングhello, world,がインデックス構成に追加されます。ただし、インデックスを再オープンしようとするとすぐに、malform_input_exception(議論スレッド)が表示されます。

このリポジトリは、synonymfilesを事前に検証するために使用できるlinterツールを使用することで、このような問題を解決します。

データセット

data/のシノニムファイルは、elasticsearch設定で直接使用できます。

以下のデータセットが現在利用可能です:

  • be-ae: イギリス英語とアメリカ英語のスペル。 からAVKO.org.
  • medical-terms: いくつかの医療用語、略語と解像度を持つ同義語ファイル。

インストール

synlintツールを使用する場合は、次を使用してpipからパッケージをインストールします:

pip install elasticsearch-synonym-toolkit

Pythonパッケージはes_synonymsとしてインストールされます。 これにより、linterツールes-synlintもインストールされます。 それをとの使用して下さい:

es-synlint 

使用法

ほとんどの場合、このモジュールをファイルまたは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')

Elasticsearch DSL Pyを使用してシノニムTokenfilterを設定することも非常に簡単です:

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

基礎となるlinterを使用するには、SynLintクラスをインポートできます。

開発

  • このリポジトリをクローンします。
  • pipを使用してパッケージの依存関係をpip install -r requirements.txtでインストールします。テストを実行するには
  • :
./panda test:all

ライセンス

コメントを残す

メールアドレスが公開されることはありません。