テキスト検索にelasticsearch 6.8を使用しています。そして、elasticsearch トークナイザーは、http: //unicode.org/reports/tr29/#Default_Word_Boundariesにリストされている区切り文字を使用して、テキストを単語に分割することに気付きました。ドキュメント内のフィールドの 1 つを検索するために使用match_phase
していますが、トークナイザーで使用される区切り文字を 1 つ削除したいと考えています。
私はいくつかの検索を行い、keyword
代わりにを使用するようないくつかの解決策を見つけましtext
た。このソリューションは、部分クエリをサポートしていないため、私の検索機能に大きな影響を与えます。
別の解決策は、keyword
クエリを使用しますが、部分的なクエリをサポートするためにワイルドカードを使用することです。ただし、これはクエリのパフォーマンスに影響を与える可能性があります。また、他の区切り文字にトークナイザーを使用することも好きです。
3 番目のオプションは、tokenize_on_chars
テキストをトークン化するために使用されるすべての文字を定義するために使用することです。しかし、これには他のすべての区切り文字をリストする必要があります。だから私はのようなものを探していtokenize_except_chars
ます。
トークナイザーがelasticsearch6.8で使用している区切り文字から1文字を取り出す簡単な方法はありますか?