問題タブ [query-analyzer]
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 - ElasticSearch search_analyzer が適用されましたが、結果が返されませんでした
小文字の用語を検索するクエリがあります。
実際には、小文字のフィルターを使用したindex_analyzerがありましたが、大文字と小文字を区別しない検索を実行できるように、 search_analyzerも追加したかったのです。
だから私はちょうどsearch_analyzerと同じアナライザーをマッピングに追加することを考えました
そのようにして、手動でElastic Searchにクエリを実行すると
検索用語が正しく小文字になっていることがわかりました
しかし、コードから実行する
- 大文字の検索語を使用すると、ES はヒットを返しません ( search_analyzerが適用されていることを確認した場合でも)
- 小文字の検索語を使用すると、ES は適切な結果ヒット数 (数百) を返します。
ケースとは関係なく同じ結果を得たいのですが。
コードでは、用語フィルターを使用してクエリを作成しているだけです。
私が間違っていることは何ですか?なぜ結果が得られないのですか?
sql - Query Analzyer で SQL Server CE テーブルを削除できないのはなぜですか?
両方を使用して SQL Server CE テーブルを削除しようとしました。
-と:
...Query Analyzer では、どちらの場合も、同じエラー メッセージが表示されます。
テーブルをドロップするのは簡単なはずですが、このテーブルは逆のハンプティ ダンプティのように跳ね返ります。
本当に消えるのに十分なほど強くドロップするには、何をする必要がありますか?「Nuke invHeader」?
けがに侮辱を加えるために、このコマンドが失敗した後 (テーブル名を指定する両方の「スタイル」)、クエリ アナライザーはシナプス接続を失ったようで、SQL/DDL ステートメントを編集できなくなります。再びシナプスに到達する前にハンドヘルド デバイスを起動します。
elasticsearch - 小文字フィルターを使用したカスタム アナライザーが期待どおりに動作しない
次のような単純なカスタム アナライザーがありますcustom_raw_analyzer
。
しかし、ランダムな文字列でテストを行ったところ、出力トークンは小文字ではありません:
結果:
誰でも理由を説明できますか?
elasticsearch - Elasticsearch で特定のクエリ間のスペースを無視するにはどうすればよいですか?
私のelasticsearchドキュメントには、次のName
ようなエントリを持つフィールドがあります:
次のクエリでこのフィールドをクエリすると(「s」と「3」の間のスペースに注意してください) :
"Samsung Galaxy Duos 3"
ではなく、関連する結果として返されます"Samsung Galaxy S3"
。
このようなタスクで私が気付くパターンは、任意の数字と任意の 1 つのアルファベット文字の間のスペースを無視して、クエリを作成することです。たとえば、"I-phone 5s"
によっても返される必要があります"I-phone 5 s"
。
これを達成する良い方法はありますか?
java - ElasticSearch でフレーズを検索するためのアナライザー
ElasticSearch 1.5.2 を使用しています。検索エンジンでフレーズの検索を許可したい。
テキストが
read with section 114 of the Indian Penal Code
デフォルトのアナライザーを使用すると、検索クエリで結果を取得できません
section 114 penal code
そこで、アナライザーを追加しました:
次のように、ファイルのインデックスを作成しています(すでに受け入れ可能なjson形式になっています):
次のようにクエリを作成しmatchQuery
ました:
しかし、私はまだ結果を得ていません。どうすればよいか教えてください。
編集:実際には、このアナライザーからあらゆる種類の結果を取得しようとすると、ヒットしません...インデックスを作成したすべてのドキュメントに存在するクエリ「セクション」を使用しても、結果は得られませんが、検索にデフォルトのアナライザーを使用すると、いくつかの結果が得られます。それで、このアナライザーは機能していませんか、それとも何ですか?
編集:サンプルドキュメント、
java - ルセン。テキスト内の単語ごとにいくつかのトークンをインデックス化する
私は lucene 3.5 をSpanishAnalyzerで使用しています (それ自体は SpanishStemmerとStandardTokenizerを使用しています)。
SpanishAnalyzer が "claramente" と "claro" などの単語を含むドキュメントをインデックス化すると、両方とも "clar" としてインデックス化されます。
この動作は理解されており、私のニーズに役立ちます。今日、クエリを実行する前に、Analyzer のtokenStream
+incrementToken()
を使用して検索語のトークンを取得し、それをインデックス付きドキュメントに対して検索します。私は QueryParser を使用していませんが、コードで lucene クエリ オブジェクトを作成しています。
ただし、SpanishAnalyzer の形態学的機能を失うことなく、正確な単語 (この例では claro) を検索する機能が必要です。
上記の手順 (tokenStream) をスキップして「claro」を直接検索できますが、「clar」としてインデックス付けされているため見つかりません。また、1 つの正確な単語と 1 つの通常の用語 (形態学的) を含むorを
使用する機能が必要なため、2 つの異なるアナライザーでフィールドを 2 回インデックス付けしたくありません。
それで…そして私は要点に達しています…トークナイザーまたはステマーまたはフィルター(?)を変更することを考えたので、インデックス作成時に、語幹が付けられたトークンと元のトークンの2つのトークンがインデックス付けされます。この場合は「claro " および "clar" 以降、クエリを実行するときに、正確な単語を使用するか、語幹の付いたトークンを使用するかを選択できます。
どのように (そしてどこで) それを行うことができるかを理解する助けが必要です。編集は Stemmer のどこかで行う必要があると思います。 PhraseQuery
SpanNearQuery
ちなみに、使用時にテキスト内の単語ごとにいくつかのトークンを返すヘブライ語アナライザーでまったく同じことを行いますincrementToken()
(ただし、ソースコードはありません)