問題タブ [full-text-indexing]

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 に答える
1983 参照

sql-server-2008 - SQL SERVER FULL-TEXT INDEX、CONTAINS が空を返す

完全なインデックスに関する問題が発生しました。これについて助けてくれる機関はありますか?

1) 全文索引を設定する

2) CONTAINS を使用して一致する行を見つける

3) すべて順調です。空の結果セットを返すだけです。そして、Table Company に CompanyName "Microsoft" の会社があると確信しています

誰かが私にこれを支持してくれたら、とても感謝しています。

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

sql-server - Lucene またはその他の検索製品を SQL Server 2005 と統合する

SQL Server 2005 で全文検索を使用する必要があり、組み込みの検索アプローチ (SQL Server 全文インデックス) を調べましたが、それほど強力ではないようです。

Lucene の機能も調べました。

今、私の質問:とにかくLuceneとSQLサーバーを統合することは可能ですか?

  1. T-SQL クエリで Lucene インデックスを使用して結果を返すことはできますか? (内部で CLR ベースの関数を使用している可能性があります)
  2. テーブル内のデータが更新されている間に Lucene インデックスを更新する方法
  3. 全体的なアーキテクチャとは?
  4. この種のサポートを提供する商用製品はありますか?

ありがとう、HB

0 投票する
4 に答える
1182 参照

sql-server - CONTAINSを使用してOR検索をさらに追加するには、クエリをクロールしますか?

2つのフルテキストインデックステーブルに依存する単純なクエリがありますが、CONTAINSを追加のOR検索と組み合わせると、実行速度が非常に遅くなります。実行プランに見られるように、2つの全文検索はパフォーマンスを押しつぶします。CONTAINSの1つだけでクエリを実行するか、どちらも使用しない場合、クエリは1秒未満ですが、ORをミックスに追加すると、クエリの運命が悪くなります。

2つのテーブルは特別なものではなく、幅が広すぎず(一方に42列、もう一方に21列、それぞれに10列がFTインデックス付けされている可能性があります)、非常に多くのレコードが含まれています(2つのうち最大のもので36kレコード)。

2つのCONTAINS検索を独自のSELECTクエリに分割し、次に3つをUNIONすることで、パフォーマンスを解決することができました。このUNIONの回避策は私の唯一の希望ですか?

実行計画:

実行計画

0 投票する
5 に答える
2248 参照

sql-server - SQLServerフルテキストサーチャーは私ではなくクレイジーだと教えてください

ユーザーが検索している特定のアドレスを持つ顧客がいます。

123一般的な方法

データベースには、以下に一致する5つの行があります。


FTクエリを実行して、これらの行を探します。検索に条件を追加するときに、各ステップを示します。

さて、これまでのところ、「ジェネリック」という単語を追加しました。

素晴らしい。そして今、私はユーザーが存在することを確認したい最後のキーワードを追加します:

は?行がありませんか?「way*」だけをクエリするとどうなりますか?

最初は、おそらくそれはのせいで*、ルートのway後にもっと多くの文字が必要だと思いました。しかし、それは真実ではありません。

  • 「123*」を検索すると「123」と一致します
  • 「generic*」を検索すると「generic」と一致します
  • オンラインの本によると、アスタリスクは0文字、1文字、またはそれ以上の文字と一致します

*s&gのためだけに削除した場合はどうなりますか?


したがって、単独で、またはルートとして、を検索することさえ許可されていないと考える人もいるかもしれません。wayしかし、これも真実ではありません。


つまり、ユーザーはすべての単語を含む行を検索しています。

123一般的な方法

私は、正しく、WHERE条項に翻訳します:

行を返しません。これはうまくいかない、私のせいではない、そしてSQLServerはおかしいと言ってください。

注: FTインデックスを空にして、再構築しました。

アップデートワン

アップデート2

次のように入力したユーザーのふりをします。

123ジェネリックwa

本当の問題は、ユーザーが完全に有効なものを入力していることであり、人間が期待するものをユーザーが期待することです。


アップデート3

誰かがこれをすべて求めました、それは私のせいではありません!:

これが私を信じなかった男のスクリーンショットです:

動作するはずなのに動作しないクエリ:

ここに画像の説明を入力してください

動作するが役に立たないクエリ:

ここに画像の説明を入力してください

証明コンテンツで機能するが有用ではないクエリ:

ここに画像の説明を入力してください


アップデート4

クエリは次のように記述できません

FTインデックスで論理的または物理的にカバーされていないアイテムがあるため。たとえば、ユーザーは次のクエリを実行します。

2010年6月4日ianboyd619

4つのキーワードを提示します。

  • 2010年6月4日
  • ian
  • ボイド
  • 619

これは、擬似コードが次のようになっている場合に、すべての条件が真になることを望んでいることを意味します。

これは、次の部分的なクエリに変換されます。

回答者の1人は、元の質問で提示された簡略化された例を見ていました。現実の世界ではありません。複数の節があるのは間違っていると言うのは簡単です。AND

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

php - FULLTEXT 検索 (Mysql) は最初は遅く、2 回目以降ははるかに高速になります

4000 レコードのテーブルがあります (全文検索で処理する方がはるかに簡単です)。検索クエリが初めて実行されるときは、はるかに遅くなります。5~10秒ほどかかります。すると速くなります。サイトが 10 ~ 15 分間非アクティブなままである場合、クエリを再度実行しようとすると速度が低下します。

私はmysql + PHPを使用しています。これはキャッシングの問題だと思います。私たちのサイトは、キャッシュにアクセスできないサードパーティのサーバーでホストされています。

私の問題の回避策はありますか。

前もって感謝します!

編集:

こんにちは、返信ありがとうございます。これが私のクエリです。

PRODUCT_2_CATEGORY、PRODUCT、MERCHANT から PRODUCT_2_CATEGORY.PRODUCT_ID を選択 WHERE PRODUCT_2_CATEGORY.PRODUCT_ID = PRODUCT.ID AND PRODUCT.PRO_STATUS='active' AND PRODUCT.MERCHANT_ID = MERCHANT.ID AND MERCHANT.M_STATUS='active' AND ( CAT_ID='1' OR CAT_ID='1004' OR CAT_ID='1005' OR CAT_ID='1006' OR CAT_ID='1007' OR CAT_ID='1008' OR CAT_ID='1002' OR CAT_ID='1003' OR CAT_ID='45' OR CAT_ID= '46' または CAT_ID='74' または CAT_ID='75' または CAT_ID='76' または CAT_ID='49' または CAT_ID='50' または CAT_ID='77' または CAT_ID='78' または CAT_ID='79 ' OR CAT_ID='80' OR CAT_ID='81' OR CAT_ID='82' OR CAT_ID='83' OR CAT_ID='84' OR CAT_ID='47' OR CAT_ID='89' OR CAT_ID='51'または CAT_ID='52' または CAT_ID='88' または CAT_ID='87' または CAT_ID='86' または CAT_ID='85' または CAT_ID='48' または CAT_ID='53' または CAT_ID='54' または CAT_ID ='90' OR CAT_ID='200' OR CAT_ID='91' OR CAT_ID='92' OR CAT_ID='93' OR CAT_ID='94' OR CAT_ID='11' OR CAT_ID='95' OR CAT_ID=' 98' OR CAT_ID='99' OR CAT_ID='100' OR CAT_ID='101' OR CAT_ID='96' OR CAT_ID='102' OR CAT_ID='103' OR CAT_ID='104' OR CAT_ID='105'または CAT_ID='106' または CAT_ID='97' または CAT_ID='107' または CAT_ID='108' または CAT_ID='109' または CAT_ID='110' または CAT_ID='114' または CAT_ID='119' または CAT_ID ='120' または CAT_ID='121' または CAT_ID='115'または CAT_ID='122' または CAT_ID='123' または CAT_ID='124' または CAT_ID='125' または CAT_ID='116' または CAT_ID='127' または CAT_ID='128' または CAT_ID='129' または CAT_ID ='117' OR CAT_ID='130' OR CAT_ID='131' OR CAT_ID='118' OR CAT_ID='111' OR CAT_ID='132' OR CAT_ID='136' OR CAT_ID='137' OR CAT_ID=' 138' OR CAT_ID='139' OR CAT_ID='140' OR CAT_ID='133' OR CAT_ID='141' OR CAT_ID='142' OR CAT_ID='143' OR CAT_ID='144' OR CAT_ID='145'または CAT_ID='146' または CAT_ID='134' または CAT_ID='147' または CAT_ID='148' または CAT_ID='149' または CAT_ID='150' または CAT_ID='151' または CAT_ID='135' または CAT_ID ='152' または CAT_ID='153' または CAT_ID='154' または CAT_ID='155' または CAT_ID='156' または CAT_ID='64' または CAT_ID='158' または CAT_ID='70' または CAT_ID='164' または CAT_ID='71' または CAT_ID='165'または CAT_ID='159' または CAT_ID='166' または CAT_ID='167' または CAT_ID='168' または CAT_ID='169' または CAT_ID='160' または CAT_ID='73' または CAT_ID='170' または CAT_ID ='172' OR CAT_ID='173' OR CAT_ID='174' OR CAT_ID='161' OR CAT_ID='175' OR CAT_ID='176' OR CAT_ID='177' OR CAT_ID='178' OR CAT_ID=' 162' OR CAT_ID='179' OR CAT_ID='180' OR CAT_ID='181' OR CAT_ID='182' OR CAT_ID='183' OR CAT_ID='163' OR CAT_ID='184' OR CAT_ID='192'または CAT_ID='191' または CAT_ID='190' または CAT_ID='189' OR CAT_ID='188' OR CAT_ID='187' OR CAT_ID='186' OR CAT_ID='185' OR CAT_ID='193' OR CAT_ID='112' OR CAT_ID='113' OR CAT_ID='65' OR CAT_ID='66' OR CAT_ID='67' OR CAT_ID='68' OR CAT_ID='69') AND MATCH(PRODUCT.TITLE) AGAINST('shirt' IN BOOLEAN MODE) ORDER BY PRODUCT.TITLE ASC LIMIT 0, 12

私たちのサイトは、サードパーティの Web サーバー (Plesk コントロール パネル) でホストされています。そのため、他のソフトウェアをインストールできるかどうかはわかりません。

私たちのサイトは 2010.shoppingstrip.com.au です。このクエリは、何かを検索するときに実行されます。

ありがとう

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

search - SOLR の EdgeNGramTokenizerFactory EdgeNGramFilterFactory の違いは何ですか?

これら 2 つのフィルターの違いは何ですか? 彼らは同じ効果を持っているようですか?

誰かがテキストにどのように適用されるかの例を提供できますか?

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

mysql - MySQL 全文クエリ ロック テーブル

ときどき、MySQL で特に長時間実行される全文クエリを取得します。クエリは非常に長時間実行されます。現在、50,000 秒間実行されているクエリが表示されています (まだ実行中です)。クエリで Kill または Kill Query を使用しても何も起こらないようです。また、クライアント側のコマンド Timeout は 30 秒であるため、クライアントはすでに失敗して立ち去っていますが、サーバーはクエリを実行し続け、かなりのリソースを消費します。以前は、このようなクエリの実行を停止するには、MySQL サービスを再起動する必要がありました。これらのクエリを停止する他の方法はありますか。そもそもクエリが実行されないようにするための対策を講じていますが、それでも時々実行されてしまい、それは大きな苦痛です. 主な理由は、クエリの実行中にテーブルの更新を実行できないためです。

長時間実行されるクエリの例は、次のようなものです。

これは、検索文字列の途中と文字列の末尾に * があるため、特に長く実行されます。

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

java - Luceneで頻出フレーズを取得する方法

Lucene で頻出フレーズをいくつか取得したいと思います。TXT ファイルから情報を取得していますが、フレーズの情報がないために多くのコンテキストが失われています。たとえば、「情報検索」は 2 つの別個の単語として索引付けされています。

このようなフレーズを取得する方法は何ですか? 私はインターネット上で役立つものを見つけることができません.すべてのアドバイス、リンク、ヒント、特に例は大歓迎です!

編集:タイトルとコンテンツだけでドキュメントを保存します:

私がやっていることにとって最も重要なのはファイルの内容だからです。タイトルがまったく説明的でないことがあまりにも多い (たとえば、タイトルがコードまたは数字である PDF 学術論文がたくさんある)。

テキスト コンテンツから上位に出現するフレーズをインデックス化する必要がどうしてもありますが、この単純な「単語の袋」アプローチがいかに効率的でないかがわかりました。

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

sql-server-2005 - 全文索引作成 複数言語

私の DB は 3 つの言語 (英語、フランス語、アラビア語) でコンテンツを保存しています。いくつかのテーブルで全文インデックス作成を有効にしていますが、いくつかのベスト プラクティスを知りたい
です。
2. アラビア語を索引付けできますか? Indexable 言語にアラビア語が表示されません。
3. 言語ごとに個別の索引を作成する必要がありますか? (私のタプルにはそれぞれ 3 つの言語がすべて含まれています)

どんなアイデアや提案も大歓迎です。

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

mysql - MyISAM は、Solr と比較して Django 検索でどのようにスケーリングしますか?

Django と Python 2.65 で作成された Web アプリケーションがあり、データベースとして MySQL 5.1 を選択したとします。

ここで、数十万のドキュメントの検索を処理するためにアプリをスケーリングする必要があり、数十万のユーザーがそれを使用する可能性があると想像してください。

現実: PySolr と Solr 1.4.0 を使用した Haystack 1.0 は、上記のシナリオで遅いことが証明されています。MyISAM はより実行可能な代替手段ですか、それとも「よりスマートな」方法で Solr を使用して現在の構成でより多くの時間を費やす必要がありますか?

提案?チップ?

助けてくれてありがとう!ミショー