問題タブ [full-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.
c++ - テキスト内の 25,000 語を検索する
テキスト内で ~ 25,000 語の出現箇所を見つける必要があります。この目的に最も適したアルゴリズム/ライブラリは何ですか?
ターゲット言語は C++
sql - SQL Server インデックスで単語を検索する
全文検索とインデックス検索の間に何かが必要です:
テーブルの 1 つの列でテキストを検索したい (問題があれば、おそらくその列にもインデックスがあるでしょう)。
問題は、列内の単語を検索したいのですが、パーツを一致させたくないということです。
たとえば、私の列には、
Mighty Muck Miller and Partners Inc.
Boy & Butter Breakfast companyという会社名が含まれているとします。
「Miller」を検索すると、最初の行が表示されます。しかし、「iller」で検索すると、「iller」で始まる単語がないため、検索したくありません。ただし、 「Break 」で検索すると、「 Boy & Butter Breakfast company 」が見つかるはずです。これは、「 Break 」で始まる単語が 1 つあるためです。
だから私が試してみると
あまりにも多くのヒットが見つかります。
空白やその他の区切り文字で区切られた単語を検索する方法はありますか?
(LINQ が最適です。プレーン SQL も同様です)
重要:区切り文字はスペースだけではありません! これが機能するには、スラッシュ、コロン、ドット、英数字以外のすべての文字を考慮する必要があります。
algorithm - ログの高速テキスト検索
これが私が抱えている問題です。ログのセットがかなり急速に大きくなる可能性があります。それらは毎日個々のファイルに分割され、ファイルのサイズは簡単にギグにまで大きくなります。サイズを抑えるために、30 日ほど前のエントリは消去されます。
問題は、これらのファイルで特定の文字列を検索する場合です。現在、Boyer-Moore 探索は実行不可能なほど遅いです。dtSearch のようなアプリケーションがインデックス作成を使用して非常に高速な検索を提供できることは知っていますが、ログがすでに占有しているスペースの 2 倍を消費せずにそれを実装する方法がよくわかりません。
確認できる参考になるリソースはありますか? インデックスを作成し、それを使用して検索するために何をすべきかを説明する標準アルゴリズムを本当に探しています。
編集:
この検索はクロスプラットフォーム アプリケーションに統合する必要があるため、grep は機能しません。外部プログラムを含めてスイングできる方法はありません。
それが機能する方法は、ログ ブラウザーを備えた Web フロント エンドがあることです。これは、カスタム C++ Web サーバー バックエンドと通信します。このサーバーは、妥当な時間内にログを検索する必要があります。現在、数ギグのログを検索するには時間がかかります。
編集 2: これらの提案のいくつかは素晴らしいものですが、別のアプリケーションを統合できないことを繰り返し述べなければなりません。これは契約の一部です。ただし、いくつかの質問に答えるために、ログ内のデータは、ヘルスケア固有の形式で受信したメッセージまたはこれらに関連するメッセージのいずれかによって異なります。インデックスの再構築には最大 1 分かかる場合がありますが、現在、検索には非常に長い時間がかかるため (最大 2.5 分かかることがわかりました)、インデックスに依存することを検討しています。また、多くのデータは、記録する前に破棄されます。一部のデバッグ ログ オプションがオンになっていない限り、ログ メッセージの半分以上が無視されます。
検索は基本的に次のように行われます: Web フォーム上のユーザーには、最新のメッセージのリストが表示されます (スクロールするとディスクからストリーミングされます。ajax の場合はそうです)。それは、おそらく患者ID、または送信した文字列であり、その文字列を検索に入力できます。検索は非同期的に送信され、カスタム Web サーバーは一度に 1MB ずつログを直線的に検索して結果を取得します。ログが大きくなると、このプロセスに非常に長い時間がかかることがあります。そして、それは私が最適化しようとしているものです。
python - 全文検索エンジンの構築: どこから始めるべきか
Google App Engineを使用して Web アプリケーションを作成したい(参照言語はPythonになります)。私のアプリケーションには単純な検索エンジンが必要なので、ユーザーはキーワードを指定してデータを見つけることができます。
たとえば、これらの行を含む 1 つのテーブルがある場合:
1 オフィススペース
2 2001: 宇宙の旅
3 ブラジル
ユーザーが「スペース」をクエリすると、行 1 と 2 が返されます。ユーザーが「オフィス スペース」をクエリすると、結果も行 1 と 2 になります (行 1 が最初)。
これを簡単な方法で行うための技術的なガイドライン/アルゴリズムは何ですか?
この背後にある理論への良い指針を教えてもらえますか?
ありがとう。
編集:ここでは複雑なものを探しているわけではありません(大量のデータのインデックス作成など)。
sql - 検索しやすいようにデータを構造化する方法
音楽プレイリスト専用の検索アプリケーションを作成しています。
ジャンルやファイル形式はプレイリストごとに異なり、プレイリスト内でも異なる場合があります。「同義」タグの概念もあります (たとえば、urban はヒップホップと R&B の両方をカバーしますが、その逆はカバーしません)。
以下は、検索用語と期待される結果のリストです。
gospel: 少なくとも 1 つのゴスペル ソングを含むすべてのプレイリストを返す必要があります。すべてのゴスペル ソングを含むプレイリストが最初に表示されます。Urban: すべての R&B と Hiphop を返す必要があります。ここでも、すべてのアーバン トラックを含むプレイリストが最初に表示されます。hiphop: すべてのヒップホップを返しますが、r&b は返しません。flac: flac ファイルを含むすべてのプレイリストを返す必要があります。純粋なflacのものから始めます。hiphop flac: 最初に Hiphop flacs を返し、次に他のヒップホップ オーディオを返す必要があります。 Hiphop AND flac: Hiphop flacs のみを返す必要があります。
このプロジェクトを始めたばかりなので、これらすべてをインデックス化する最善の方法を考えています。Lucene のような全文検索は、ここで役に立ちますか? これらのプレイリストを説明するテキストはありませんが、生成することはできます。
これらすべての用語を「タグ」として整理し、データベースに多対多で格納することを考えています。
テーブル: プレイリスト ( pk(id), desc ) テーブル: タグ ( pk(id), desc ) テーブル: プレイリスト_has_tag ( pk(link_id, tag_id) )
アーバン == ヒップホップを解決するには || rnb 事、私はおそらく tag_synonyms テーブルを追加します:
表: tag_synonyms ( pk(tag_id, synonym_tag_id) )
次に、アーバンがヒップホップと rnb を包含することを示す 2 つのレコードを作成します: アーバンのタグ ID、ヒップホップのタグ ID、アーバンのタグ ID、RNB のタグ ID
このアプローチを使用すると、クエリが非常に複雑になる可能性があると感じています。
ここで CouchDB を使用できますか? 現在PostgreSQLを使用しています。この種のことを簡単にするソフトウェアはありますか?
将来的には、次のような複雑な検索用語を掘り下げてサポートできるようにしたいと考えています。
(ヒップホップ OR ハウス) AND ファイルタイプ:mp3 AND アートワーク:no
また、期間なども組み込みます。
sql-server-2005 - SQL 2005 のフルテキスト カタログがランダムに遅くなるwww
SQL 2005 ボックスでフルテキスト カタログを作成しましたが、再構築プロセスが完了した後、実行速度が非常に遅くなります。ユーザーがタイムアウト エラーにならないように、ハック (つまり、try...catch{do again}) を実装しました。これは私の中で気分が悪くなります。後続のすべてのクエリは非常に高速です。
この問題を経験した人はいますか?解決策はありますか? ありがとう!
PS はい、Google で何度も検索しました。左手でも。
sql-server - 7645 Null または空の全文述語
SQL2005 で正常に実行されたクエリがありますが、データベースを SQL2008 に移動すると、タイトルからエラーが発生します。
問題のコードは、空のパラメーターを指定した CONTAINS、CONTAINSTABLE、または FREETEXT の呼び出しです。ただし、そのような値がある場合にのみ呼び出しまたは参加しようとしています
また
ただし、これが SQL2008 で機能するための回避策が見つかりません。何か案は?
動的 SQL を実行できること、または 2 つの異なるケース (FT 結合を使用して選択する、FT 結合を使用せずに選択する) の if ステートメントを使用できることを知っています。これを行う必要のないより良い回避策はありますか?
sql-server - 全文検索で異なる列に重みを割り当てるにはどうすればよいですか?
全文検索クエリで、特定の列により高い重みを割り当てたいと考えています。次のクエリを検討してください。
ここで、結果で [名前] 列の重みを高くしたいと考えています (名前、キーワード、および場所は全文索引付けされています)。現在、結果が 3 つの列のいずれかにある場合、ランクは影響を受けません。
たとえば、「Chilly Chicken」という名前の行を、別の名前の「Chilly Chicken」というキーワードの行よりも上位にランク付けしたいと考えています。
編集:
私は、ContainsTable を使用することに熱心ではありません。これは、フレーズ (Chilly AND Chicken など) を分離することを意味し、考えられるすべての組み合わせ (Chilly AND Chicken、Chilly OR Chicken など) を検索する必要があるためです。 FTS エンジンは、どの結果が最も一致するかを自動的に判断します。FREETEXT はこのようにうまく機能すると思います。
CONTAINS/CONTAINSTABLE の仕組みを誤解していた場合は、お詫び申し上げます。
c# - 全文検索を SQL Server に組み込むのはどれくらい難しいですか?
SQL バックエンドを使用して C#/ASP.NET アプリを構築しています。締め切りが迫っており、ページを完成させようとしています。左側のフィールドから、デザイナーの 1 人が私のページの 1 つに全文検索を組み込みました。この時点までの私の「検索」はフィルターであり、特定の要因と列の値によって結果セットを絞り込むことができました。
私は締め切りに近づいているので(猫が食べて吐いたもののように見える時点で、夜は3時間睡眠です)、私はこのページが他のページと非常に似ていることを期待していました。悪臭を放つかどうかを決定します。これまでにページで全文検索を行ったことはありません.... これは登るべき山ですか、それとも簡単な解決策はありますか?
ありがとうございました。
sql-server - 検索テキストを全文検索に正規化し、条件
ユーザーが必要なのは、Googleの場合と同じように検索条件を入力することです。いくつかの単語、おそらくいくつかの引用句、おそらくいくつかの演算子、そしてそれがうまく機能するようにします。
.Netソリューションはここから入手できます:http: //ewbi.blogs.com/develops/2007/05/normalizing_sql.html
ここでサポートされている純粋なT-SQLバージョンを探しています。(またはVbScript / javascript)
例:「ドッグフード」の価格:20..45
次のようになります(mssqlの場合):select * from table t join containstable(desc、'"dog" and food *')k on k.key = t.id where t.price between 20 and 45
演算子:and、or、near、 ""、not、*など。