問題タブ [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 投票する
4 に答える
4624 参照

php - PHP を使用してファイル内のテキストを検索する

PHP を使用して PDF、doc、docs、txt などのファイル内のテキストを検索するにはどうすればよいですか? MySQL で全文検索と同様の機能を実行したいのですが、今回はデータベースではなくファイルを直接検索します。

検索は、フォルダーにある多くのファイルを検索します。この問題に対する提案、ヒント、または解決策はありますか?

また、Googleもファイルを検索していることに気付きました。

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

google-app-engine - AppEngine-簡単なテキスト検索

App Engineの公式テキスト検索機能がリリースされるまで使用できる、簡単で効果的なAppEngineのテキスト検索を実装したいと考えていました。そこにはライブラリがあるようですが、何か新しいものをインストールするのはいつも面倒です。これが有効な戦略かどうか疑問に思います。

1)テキスト検索可能である必要がある各プロパティをテキストフラグメントのセット(リスト)に分割します2)これらのリストを追加してレコードを保存します3)検索するときは、リストプロパティで等式フィルターを使用します

たとえば、レコードがある場合:

私はこのようなプロパティを保存することができます:

次に、検索するために、これを実行して、上記のレコードが返されることを期待できます。

これはテキスト検索の実装方法ですか?特に段落などがある場合、インデックスが制御不能になるのをどのように防ぎますか?通常使用される他の圧縮戦略はありますか?単純なものが必要な場合は、これでうまくいくかもしれませんが、発生する可能性のある問題を知っておくと便利です。

アップデート:::

さて、この概念はおそらく正当であることがわかりました。このブログ投稿も参照しています:http://googleappengine.blogspot.com/2010/04/making-your-app-searchable-using-self.html

注:上記のブログ投稿のソースコードは、現在のバージョンのLuceneでは機能しません。グーグルはとにかくすぐにアプリエンジンの独自のテキスト検索を出すことになっているので、私は古いバージョン(2.9.3)をクイックフィックスとしてインストールしました。

以下の応答で提案されている解決策は簡単な修正ですが、大きなテーブルの制限により、クエリの1つのプロパティでのみ非等式演算子を使用できるため、1つのフィールドでクエリを実行している場合にのみ機能します。

複数のプロパティについてクエリを実行する場合は、プロパティごとにインデックスを保存できます。私の場合、これを小さなテキストフィールドの自動提案機能に使用しており、実際にはドキュメント内の単語やフレーズの一致を検索していません(これには上記のブログ投稿の実装を使用できます)。これは非常に単純で、ライブラリは必要ありません。また、誰かが「Larry」を検索している場合、「arry」という単語の途中から始めるのではなく、「La...」と入力することから始めると思います。したがって、プロパティが人の名前などの場合、インデックスには最初の文字で始まる部分文字列しか含まれないため、「Larry」のインデックスは{"l"、 "la"、 "lar"、 "larr "、"ラリー "}

電話番号のように、最初または中桁から検索したいデータに対して、別のことをしました。この場合、長さ3の文字列で始まるサブ文字列のセット全体を保存したので、電話番号 "123-456-7890"は{"123"、 "234"、 "345"、...になります。 。"123456789"、 "234567890"、 "1234567890"}、合計(10 *((10 + 1)/ 2))-(10 + 9)=41インデックス...実際に私がしたことはもう少しでした使用される可能性が低いいくつかのサブストリングを削除するために複雑ですが、あなたはその考えを理解します。

次に、クエリは次のようになります。(Pseaudo Code)SELECT * from Person WHERE firstNameSearchIndex == "lar" phonenumberSearchIndex == "1234"

App Engineが機能する方法は、クエリのサブ文字列がプロパティ内のいずれかのサブ文字列と一致する場合、それが一致としてカウントされることです。

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

php - テキスト ファイルを検索し、結果を表示しますか?

ユーザーから入力を取得し、ファイルを検索して結果を表示したい場合:

何をしなければならないかわかりません。関連する $searchvalues を含むテキスト ファイルの行を表示したいだけです。

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

java - 間にある可能性のある単語を含む、別の文字列を含む文字列セクションを検索します

学期の最後のプロジェクトの目標は、Songオブジェクト内の歌詞文字列で特定のフレーズの検索を実行し、部分文字列の一致の長さに基づいて結果をランク付けすることです。歌詞はファイルから読み取られ、そのファイルの改行と一致します。

たとえば、「彼女はあなたを愛しています」を検索すると、サンプルの一致でこれらが返されます。

ビートルズ:「...彼女はあなたを愛しています、ええ、ええ、ええ...」ランク= 13文字
ボニー・レイット:「...彼女はあなたを愛しています...」ランク= 18文字
エルビス・プレスリー:「...あなたは彼女が私を愛しているかどうか尋ねています\r\ nまあ、あなたは知りません..."ランク=23文字

最後の例からわかるように、一致は複数の行にまたがることができます。

にすべての曲があるTreeMap<String, TreeSet<Song>>ので、クエリの最初の単語に一致するすべての曲を取得します。この状況では正規表現が機能しないため、文字列で一致するものを検索するのが困難です。

Songオブジェクトが作成されたら、歌詞をSetにダンプして、1つの単語の検索を実行しました。これを行うにはString.split("[^a-zA-Z}")、個々の単語を分離し、句読点を削除していました。そのため、その配列で検索を実行したいと思います。私が使用しているプロセスは次のようになります。

反復が完了すると、一致する配列セクションの曲、検索フレーズ、開始点、および終了点を保持するために、Rankオブジェクトが作成されます。ランクオブジェクトには、文字数をカウントし、空白を補正してランクを計算するメソッドがあります。次に、これはPriorityQueueに挿入され、上位10件の一致が元のmatchSetから取得されます。

問題は、これによって誤検知が防止されず、一致ランクが歪む可能性があることです。たとえば、AerosmithのBeyond Beautifulには、「...彼女は私を愛している彼女はあなたを愛していない...」が含まれているので、私のプロセスでは、「...彼女は私を愛している彼女はあなたを愛していない...」と一致します。 13のランクは27になります。

誤検知や誤ったランキングを取り除くには、どのような変更が必要ですか?

0 投票する
3 に答える
814 参照

graph - グラフ/分子比較アルゴリズムのテキスト検索の適応

従来とは異なる種類のテキスト検索用のテキスト検索エンジンを探しています。どのツール (Lucene、Sphinx、Xapian、またはその他のもの) が自分に最も適しているかについてのアドバイスと、どこから始めればよいかについての指針が必要です。

私はグラフ(原子と結合)として表現された分子を持っています。サイズ k までのすべてのサブグラフを列挙する方法があります。技術的には、入力はSMILESで、出力は正規の SMARTS と各サブグラフ/SMARTS の発生回数です。

たとえば、入力分子が「CCO」の場合、標準的な結果は {"C": 2, "O": 1, "CC": 1, "OC": 1, "CCO": 1} であり、分子が " SCO " の場合、標準的な結果は {"C": 1, "S": 1, "O": 1, "CS": 1, "OC": 1, "SCO": 1} です。これらは小さな例です。実際の分子については、「CC(C)O」、「CCCOCC」、「cn」、「cccc(c)O」のような約 500 の「単語」を取得しました。

分子を特徴的な文字列とカウントのコレクションとして見ることは、テキスト検索ツールを使用してテキスト レベルで比較を行うことができることを意味し、それらが化学レベルで意味を持つことを期待しています。

たとえば、おそらくtf-idf重みでコサイン類似度を使用し、類似のサブパターンを探すことで類似の分子を見つけることができます。上記の「CCO」と「SCO」の例では、コサイン類似度は (2*1+1*1+1*1)/sqrt(2*2+1*1+1*1+1*1+1* 1)/sqrt(6*(1*1)) = 4/sqrt(8*6) = 0.58.

別の例として、「CCS」部分構造を含む分子を見つけたい場合、カウントに基づいて高速逆インデックス検索を実行できます (分子には少なくとも 2 つの「C」、少なくとも 1 つの「CS」が必要です。など) NP サブグラフ同型問題に取り組む前に。つまり、テキストベースのメソッドはフィルターとして機能し、明らかな不一致を拒否できます。

存在するテキストの解決策を見つけようとしていますが、少し気が遠くなります。ストップ ワードもステミングも語順も気にしません。存在する多くの機能は必要ありません。「C」が 2 回出現するか 3 回出現するかを知ることが重要なので、単語ベクトルを保持する機能が必要です。

自分に最も適したテキスト検索エンジンはどれですか? 特にMahoutでの作業では、Luceneのように見えます. ドキュメントのどの部分を見るべきか、または関連するチュートリアルをお勧めできますか? 私が見つけたものは、全文検索用で、ステミングやその他の必要のない機能を備えています。

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

c# - C#で10万以上の文字列を高速で動的にファジー検索

テキストボックスに入力された、事前に読み込まれた銘柄記号であるとしましょう。インストールするライブラリではなく、コピーできるコードを探しています。

これはこの質問に触発されました:

C#用に作成されたあいまい検索または文字列類似関数ライブラリはありますか?

レーベンシュタイン距離アルゴリズムはうまく機能しているようですが、計算には時間がかかります。ユーザーが余分な文字を入力したときにクエリを再実行する必要があるという事実に関する最適化はありますか?各入力の上位10件の一致を表示することに興味があります。

0 投票する
3 に答える
2172 参照

c++ - 文字列のマップを取得し、それを特定の文字列と比較する方法

name:location のような文字列ペアのマップがあります (unix のような絶対位置 a la myfolder/)。いくつかの場所が与えられmyfolder/mysubfolder/myfileます。指定されたURLに最も適合するマップの場所を見つける方法は?

例として、次のようなマップがあります。

myfolder/mysubfolder/myfile/blablabla/(文字列) が与えられます。マップ内のどの項目に最も関連があるかを調べたいと考えています。検索結果はservice4、最も関連性の高いコンテンツを含むマップ アイテムとして表示されます。

では、与えられた文字列値によって、それが最も関連するマップ要素を見つける方法は?

私は C++ nube であり、そのようなものを実装する方法がわからないため、いくつかのコードを提供してください。

だから私は問題を少し単純化しました -今私が必要とするすべての関係は、与えられたパスがどれほど深いかということです。これは、文字列の場合、すべてのマップパスを反復するだけで認識できます。指定されたパスでアイテム パスが見つかりました。

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

html - HTMLファイルのコンテンツで特定の単語を検索する

私はiPad用のアプリを開発しています。このアプリはHTMLファイルをロードするので、コンテンツを面白くてかわいい方法で表示します。今、私の悪夢が始まります。私はこれらのファイル内のランダムな単語を検索しようとしましたが、方法がわかりません。各HTMLファイルの内容を文字列のような変数にロードし、変数のメソッドを使用してそれらの単語の検索を実行できる、ある種のObjective-C関数を使用することを考えています(たとえば、JavaまたはC#で同じことを実行します)。 )。

これは簡単な作業かもしれませんが、私はそれに固執し、ヒント、メソッドと関数、私がやろうとしていることと同様のコードフラグメント、または私がしなかったこの問題を解決するための他の可能性など、いくつかの助けをいただければ幸いです。まだ考えてみてください。

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

java - 「検索クエリ」からキーを抽出する方法は?

検索クエリのキーワードを抽出する必要があります。たとえば、「最新の人気の Nokia 携帯電話」を検索するとします。このフレーズのキーワードを抽出したい。これを行うためにJavaで書かれたライブラリはありますか?

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

postgresql - 大きなテーブルで部分文字列一致クエリを高速に動作させる方法は?

テキスト フィールドを持つ大きなテーブルがあり、ILIKE を使用して、このテーブルに対してクエリを実行し、特定の部分文字列を含むレコードを検索したいと考えています。小さなテーブルでは完璧に機能しますが、私の場合はかなり時間がかかる操作であり、ウェブサイトのライブ検索フィールドで使用しているため、迅速に処理する必要があります. どんなアイデアでも大歓迎です...