問題タブ [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.

0 投票する
1 に答える
82 参照

elasticsearch - アナライザーを使用して複合クエリで検索できない

タグ (コンマで区切られたタグの文字列)、作成者、テスターなど、複数のフィールドを持つ問題インデックスがあります。これらすべてのフィールドで一度に問題を検索できるグローバル検索を作成しています。私はブールクエリを使用しています。

Analyzer がなくても結果を取得できますが、セパレータとしてスペースを使用します。たとえば、python 3 は python または 3 として検索されます。

しかし、Python 3 を単一のクエリとして検索したかったのです。そのため、タグのアナライザーを作成して、標準の空白ではなく、すべてのコンマ区切りタグが 1 つと見なされるようにしました。

しかし今、私は何の結果も得ていません。ここで何が欠けているか教えてください。ドキュメントの複合クエリでのアナライザーの使用を見つけることができません: https://www.elastic.co/guide/en/elasticsearch/reference/current/compound-queries.html

例を追加します。

{

結果はすべてのフィールドと一致する必要がありますが、タグフィールドの場合はタグの結合が必要であり、クエリはスペースではなくコンマで区切る必要があります。つまり、クエリはtestabc 4に一致する必要がありますが、test、abc、および 4 を検索するクエリの上にあります。

0 投票する
0 に答える
171 参照

elasticsearch - シングルを使用したElasticsearchの提案

これをもっとうまくやる方法はありますか?

アイデアは、Amazon の検索ボックスの提案のように、単語を提案する (入力しながら検索する) ことです。

入力逐次検索の例の画像

私は実用的な解決策を持っていますが、より良い解決策があると思います。

設定

アナライザ

マッピング

ドキュメント

そして検索

結果

これが最善の解決策だとは思いません。これを最適化する方法はありますか?

0 投票する
1 に答える
165 参照

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文字を取り出す簡単な方法はありますか?