問題タブ [elasticsearch-analyzers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elasticsearch - アナライザーを使用して複合クエリで検索できない
タグ (コンマで区切られたタグの文字列)、作成者、テスターなど、複数のフィールドを持つ問題インデックスがあります。これらすべてのフィールドで一度に問題を検索できるグローバル検索を作成しています。私はブールクエリを使用しています。
Analyzer がなくても結果を取得できますが、セパレータとしてスペースを使用します。たとえば、python 3 は python または 3 として検索されます。
しかし、Python 3 を単一のクエリとして検索したかったのです。そのため、タグのアナライザーを作成して、標準の空白ではなく、すべてのコンマ区切りタグが 1 つと見なされるようにしました。
しかし今、私は何の結果も得ていません。ここで何が欠けているか教えてください。ドキュメントの複合クエリでのアナライザーの使用を見つけることができません: https://www.elastic.co/guide/en/elasticsearch/reference/current/compound-queries.html
例を追加します。
{
結果はすべてのフィールドと一致する必要がありますが、タグフィールドの場合はタグの結合が必要であり、クエリはスペースではなくコンマで区切る必要があります。つまり、クエリはtestとabc 4に一致する必要がありますが、test、abc、および 4 を検索するクエリの上にあります。
elasticsearch - Elasticsearchトークナイザーから区切り文字を1つ削除するにはどうすればよいですか?
テキスト検索に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文字を取り出す簡単な方法はありますか?