1

現在、asp を使用して内部検索エンジン データベースを構築しようとしています。私は専門家ではなく、このスタイルのコーディングについて簡単に紹介しただけです。私が抱えていた問題はこれです:

(例) 比較的同じで、説明するキーワードが同じ 2 つのドキュメントがあります。ただし、表中のキーワードは同じ順序で書かれているわけではありません。表に記載されているすべてのキーワードは、スペースで区切られています。

項目1 のキーワード:エンジンのスペアパーツ
項目2 のキーワード:エンジンのスペアパーツ

今私が持っているコードでは、これらのキーワードの 1 つだけを入力した場合、項目 1 と 2 を表示できます。

sql = "Select title, descript, url, uid FROM searchMachine WHERE keywords LIKE '%" & Replace(keywords, "'", "''") & "%' ORDER BY uid;"

ただし、検索ボックスに「スペア エンジン」と入力すると、項目 1 ではなく項目 2 のみが表示されます。リストされている最初の 2 つ (または 2 つのペア) のキーワードのみに参加しているようです。私が達成したい目標は、ユーザーが入力するグループ化されたキーワード (つまり、予備のエンジン部品) を許可し、リストされたキーワードのいずれかを含むすべての関連情報を引き続き表示できるようにすることであり、キーワードのペアまたはグループを書くことを心配する必要はありません。何度も。

全文検索の機能があることは知っていますが、それを使ってセキュリティ侵害の事例があったことを調査したので、リスクを冒すことは避けたいと思います。これは AND または OR ステートメントに関連している可能性があると感じていますが、必要な場合の配置がわかりません。この状況に関する専門知識があり、喜んで助けてくれる人はいますか?

4

2 に答える 2

0

あなたが言っていることを行うには、検索用語に入力された単語の数に基づいて WHERE 句を動的に構築する必要があるため、クエリ文字列に追加して「OR」ステートメントを生成する小さなループが必要になります。最初の単語の後に入力された単語ごとに、「X、Y、および Z」という 3 つの単語が入力された場合、次のようになります。

WHERE keywords LIKE 'X'
OR keywords LIKE 'Y'
OR keywords LIKE 'Z'

これを行うには、検索用語を空白で区切られた単語に分割し、複数ある場合は、それぞれの「OR」ステートメントをクエリ文字列に追加します...

ただし、車輪を再発明する場合は、そうするための真剣に正当な理由が必要であるという点で、クルセルは正しいことを認めなければなりません...

于 2013-04-09T18:50:41.603 に答える