フル テキスト カタログを作成したテーブルがあります。テーブルには 6000 を少し超える行があります。インデックスに 2 つの列を追加しました。1 つ目はある種の一意の識別子と見なすことができ、2 つ目はそのアイテムのコンテンツと見なすことができます (私のテーブルには、フル テキスト カタログの一部ではない11 の他の列があります)。いくつかの行の例を次に示します。
TABLE: data_variables
ROW unique_id label
1 A100d1 Personal preference of online shopping sites
2 A100d2 Shopping behaviors for adults in household
UNIQUE ID
フロント エンドの Web アプリケーションには、ユーザーが入力できるテキスト ボックスがあり、またはのLABEL
列で検索している用語に一致するアイテムのリストを取得できます。したがって、たとえば、ユーザーがsho
orと入力した場合a100
、リストには上記の両方の行が入力されます。入力したbehav
場合、リストには上の行 2 のみが表示されます。
これは、各 で Ajax リクエストを介して行われますkeyup
。PHP は、次のような SQL サーバーでストアド プロシージャを呼び出します。
SELECT TOP 50 dv.id, dv.id + ': ' + dv.label,
dv.type_id, dv.grouping, dv.friendly_label
FROM data_variables dv
WHERE (CONTAINS((dv.unique_id, dv.label), @search))
(@search
は、ストアド プロシージャに渡されるユーザーからのテキストです。)
TOP 50
特にクエリで使用していない場合は、これがかなり遅くなることに気付きました。
私が探しているのは、SQL Server 上で直接、またはフルテキスト インデックス作成のアイデアを放棄し、jQuery を使用してクライアント側で検索可能な項目の配列を検索することにより、これを高速化する方法です。私は jQuery AutoComplete のものと AutoComplete 用の他の jQuery プラグインを少し調べましたが、まだ何もモックアップしようとはしていません。それが私の次のステップになりますが、最初にここで確認して、どのようなアドバイスが得られるかを確認したいと思いました.
前もって感謝します。