問題タブ [text-search]

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 投票する
0 に答える
65 参照

sql - 2 つの表からの Oracle Text 検索用の列の移入

私は Oracle Text 検索の利点を調査しており、現在、複数の (関連する) テーブルから検索テキスト データを収集し、そのデータを 1 対多の関係で小さいテーブルに格納することを検討しています。

これらの 2 つの単純なテーブル、家と住民を考えてみましょう。無人の家は決してありません。

HOUSE.Search_Text 列を INHABITANT からのテキストで更新する SQL を作成したいと考えています。これは 1 対多であるため、SQL は社内で一致する行ごとに INHABITANT のデータを照合し、データを (カンマ区切りで) 結合して Search_Text フィールドを更新する必要があります。

完了すると、HOUSE.Search_Text の Oracle Text 検索索引によって、検索条件に一致する HOUSE が返され、それに応じて INHABITANT を検索できます。

もちろん、これは非常に単純化された例です。多くの列からデータを取得し、両方のテーブルのフィールド全体で全文検索を行いたいと考えています。

同僚の助けを借りて、次のことができました。

戻り値:

いくつかの質問:

  1. これは、このデータを返すための効率的なクエリですか? 微妙に違うのが気になります。
  2. これは、複数のテキスト・フィールドでOracle Text検索を使用する正しい方法ですか?
  3. 上記の結果で House.Search_Text を更新するにはどうすればよいですか? 相関サブクエリが必要だと思いますが、うまくいきません。
  4. House を更新するよりも、House_ID と Search_Text のみを含む新しいテーブルを作成する方が効率的でしょうか?
0 投票する
2 に答える
154 参照

java - オーバーラップが発生する可能性のある文字列の配列内の文字列のインデックスを検索します

部分文字列検索のバリアントを作成するのに問題があります。基本的な目標は、ソース データが 1 つの文字列ではなく文字列の配列にあることを除いて、部分文字列検索を実行できるメソッドを作成することです。

私は周りを見回しましたが、これをエレガントに解決した人を見つけることができません。

次のような入力データを検討してください。

ここで、ターゲット文字列が現れる最初の場所のペアを返すことができるメソッドを書きたいとしましょう。このペアは、ターゲットが表示されるソース配列内の文字列の最初のインデックスと、その文字列内のターゲットが開始するインデックスを表します。

0 ベースのインデックスの例:

3 つの for ループが必要になることはわかっていますが、エッジ ケース、つまりターゲット文字列がソース配列で複数の文字列を使用する場合の処理​​方法がわかりません。

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

mongodb - 集約フレームワークでテキスト検索を使用する場合の MongoDB インデックスの最適化

MongoDB の上に単純化されたバージョンの検索エンジンを構築しています。

サンプルデータセット

「offset-limit」を使用して結果をページ分割することは避けたいと考えています。これを行うには、基本的に「seek メソッド」を使用して、クエリの「where/match」句を変更してインデックスを使用できるようにします。コレクションを繰り返し処理して目的の結果を取得する代わりに。「シーク メソッド」の詳細については、 http: //use-the-index-luke.com/blog/2013-07/pagination-done-the-postgresql-wayを読むことを強くお勧めします。

通常、検索エンジンは結果をスコアで並べ替え、日付を更新して降順で並べます。これを実現するために、次のように集計パイプラインでテキスト検索機能を使用しています。

先頭ページ

2 ページ目

そして最後のページ

結果をスコア、updDate、および ID で並べ替える方法と、2 番目の一致フェーズで、ドキュメントのスコア値、更新日、および最後に ID を使用してそれらをページ分割しようとする方法に注目してください。

インデックスの作成では、テキスト インデックス プレフィックス フィールドでテキスト クエリをカバーできないことが考慮されています。問題https://jira.mongodb.org/browse/SERVER-13018を参照してください。

「executionStats」モードと「allPlansExecution」モードは集約フレームワークでは機能しないため、https: //jira.mongodb.org/browse/SERVER-19758 を参照してください。MongoDBがどのようにクエリを解決しようとしているのかわかりません。

インデックスの交差はテキスト検索では機能しないため、https: //jira.mongodb.org/browse/SERVER-3071 (2.5.5 で解決済み) およびhttp://blog.mongodb.org/post/87790974798/effectiveを参照してください。 -indexing-in-mongodb-26著者が言う場所

https://docs.mongodb.org/manual/MongoDB-indexes-guide-master.pdfのセクション 3.4(Text Search Tutorials) および 3.5(Indexing Strategies) を何度か読んだ後、明確な結論に達しませんでした。

では、テキスト検索の観点から、このコレクションをインデックス化するための最良のインデックス戦略は何でしょうか?

最初の一致フェーズの 1 つのインデックスと 2 番目の (ページネーション) 一致フェーズの別のインデックス?

両方の一致フェーズのフィールドを考慮した複合インデックス?

上記のどれでもない?

ありがとう

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

mongodb - pymongoでインデックスを作成するにはどうすればよいですか

Mongo DB の特定のフィールドでテキスト検索を有効にしたいと考えています。この検索を Python で実装したい (-> pymongo)。インターネットで与えられた指示に従うと:

次のエラー メッセージが表示されます。

pymongoでインデックスを作成する別の/より良い方法はありますか?

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

mongodb - pymongoのインデックス付きフィールドで複数の単語をクエリするにはどうすればよいですか?

インデックス付きテキスト検索を実行したいときは、次のコマンドを使用します。

どうすれば複数の単語を照会できるのか疑問に思っています。クエリをに設定しようとしましquery = ['word1', 'word2']たが、うまくいきません。

0 投票する
2 に答える
1459 参照

c++ - 文字列のリスト内の単語の出現について文字列を検索します

C++ で、文字列のリストの ANY の最初のインスタンスを文字列から検索する方法を知りたいです。のフルワード バージョンの一種std::string::find_first_of(): "引数で指定された文字のいずれかと一致する最初の文字を文字列から検索します"。

提供されたリスト/配列内の単語のいずれかと一致する最初の WORD を文字列から検索するものが必要です。明確にするために、文字列のインスタンスの配列を検索したくありません。配列内の何かのインスタンスについて、文字列を検索したい。

私の目標は、文を取り、リストにあるすべての単語を削除できるようにすることです。たとえば、リスト{"the" "brown", "over"}; と文を渡すと、 "the quick brown fox jumped over the lazy dog"、出力したい" quick fox jumped lazy dog". また、必要に応じて 100 語のリストを提供できるようにしたいと考えています。これを拡張可能にする必要があります。

私が考えることができる唯一の解決策は、テキストブロックのループで使用std::find(stringArray[0])し、whileその単語が見つかったインデックスを保存し、それをすべて別のforループに入れて、配列内のすべての単語に対してそれを行い、各単語のインデックスを 1 つの巨大なリストにまとめます。必要に応じて、そのリストを数値で並べ替え、最後に、そのリスト内の位置にある各単語を調べて削除します。

特に、50,000文字のすべての文を通過するために、多くの異なる文字列で何度も使用する必要があるため、私のソリューションは難しく、非常に遅いように見えるため、関数またはそれを行うためのより簡単な方法があることを本当に望んでいますテキストのブロック。より最適化されたものが優先されます。

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

emacs - 指定された値を含む数値範囲のバッファを検索する方法

のような多くのアドレス範囲を含む lldb 出力を保持するバッファがあります[0x00007fff60489000-0x00007fff604c0000)

アドレス (16 進数でも) が与えられた場合、そのアドレスを含む範囲をどのように検索しますか? これにはカスタムの elisp コードが必要になると思います。