シナリオは...
私はASP.netとVisual Basicで、ユーザーが作成した製品リスト (以下「投稿」と呼びます) を表示する Web サイトを開発しています。このサイトには、ユーザーが自分の投稿をより簡単に見つけられるようにする検索ボックスがあります。検索ボックスは、ユーザーが特定のキーワードを入力できるように設計されており、よりカスタマイズされた検索が提供されることが期待されます。例えば:
上記の例では、ユーザーは、"John Smith" という名前に一致する著者と "Crime" および "Suspense" というタグを持つ本を検索することを指定しています。
手順:
- 私の SearchBoxManager クラスは、これらのキー名 (Author、Tags) とキー値 (John Smith、Crime、Suspense) を取得します。
- これらのパラメーターを使用して SQL クエリを実行し、完全一致を探します。
- キー値から各単語を抽出して、個別に検索できるようにします。
- これは私が問題を抱えているところです。これらのパラメーターを使用して SQL クエリを実行し、完全に一致しないものを探します (たとえば、'%John%'、'%Smith%')。このステップでは、関連性に基づいて結果のシステムを作成します。これは私の最初の関連性アルゴリズムであるため、間違った方法で行っている可能性があります。
問題...
3 番目のステップが適切に機能するように、キー値から分離された単語の各セットをテーブル値パラメーターに配置し、ワイルドカード '%' で囲まれた SqlCommandText でそのテーブル値パラメーターを使用したいと考えています。
つまり、各キー値の単語数は毎回変わる可能性があるため、それらを何らかのテーブル値パラメーターに配置する必要があります。また、どうにかしてそれらをつなぎ合わせてクエリ文字列で直接使用することもできると思いますが、少し面倒になったので途中でやめました。
質問...
- テーブル値パラメーターでワイルドカードを使用できますか?
また、ローカル検索ボックスの関連性ランキング アルゴリズムを開発したことがある、またはそれを知っている方がいらっしゃいましたら、正しい方向に向けていただければ幸いです。
前もって感謝します。