問題
Elasticsearch が会社の固有名詞である単語を分析するのをやめてほしい。
たとえば、当社の名前が「Smiths」の場合、Elasticsearch がその単語を分析して末尾の「s」を削除することを回避したいと考えています。
Environment
- Liferay DXP の任意のバージョン
解決策
Liferay で Elasticsearch アナライザーの構成をカスタマイズする方法
この記事では、アナライザーを再定義する方法の例を示します。 アクセントに影響されないカスタム Elasticsearch アナライザーを作成する方法
通常のパーサーによる処理を避けるために Elasticsearch でいくつかの単語を処理する方法
一部の単語が通常のパーサーによって処理されるのを回避するには、「ステマー オーバーライド」トークン フィルターまたは「キーワード マーカー」トークン フィルターを使用できます。詳細は次のとおりです。
一方、テキストの書き換えを適用できる「マッピング文字」フィルターもあります。 記事 Mapping character filter を参照してください。たとえば ":(" を "_sad_" で書き換えますが、この場合は連続するトークナイザーによって管理されます。
これらすべてを見て、「Smiths」という単語を別の方法で処理したい場合は、「Smiths」が Elasticsearch に特別なキーワードとして保存されるようにステマーのオーバーライドを設定できます。
たとえば、 "Smiths, smiths=> __smiths__" with two "_" before and after ルールを使用してステマー オーバーライドを適用すると、言語自体にある他の単語と混同されません。
追加情報