Google検索に似た式をデータベーステーブルで検索するajaxスクリプトがあります。SELECTステートメントはLIKEを使用し、関連するフィールドで一致を検索します。最初は問題なく機能しましたが、コンテンツが大きくなるにつれて、ほとんどの検索文字列に一致するものが多すぎます。
たとえば、attを検索すると、attだけでなく、注目、attaboy、burattaなども表示されます。
グーグルのような優れた検索エンジンは、他の人によって精査された提案の中間テーブルを持っているようです。データを直接検索するのではなく、AT&Tなどの承認されたフレーズを検索し、結果の数を絞り込むことに成功しているようです。誰かがこのようなものをコーディングし、適切なdbaseスキーマとクエリを提案して関連する結果を取得しましたか?
今、私は次のような名前で直接名前のテーブルを検索しています
$sql = "SELECT lastname from people WHERE lastname LIKE '%$searchstring%'";
人々のほかに、次のような中間テーブルを作成する必要があると思います。
人
id|firstname|lastname|description
niceterms
id|niceterm|peopleid
次に、クエリは次のようになります。
$sql = "SELECT p.lastname,p.peopleid, n.niceterm, n.peopleid,
FROM `people` p
LEFT JOIN `niceterms` n
on p.id = n.peopleid
WHERE niceterm LIKE '%$searchterm%'";
..したがって、検索ボックスに何かを入力すると、より良い結果が得られる優れた検索用語が得られます。
しかし、nicetermsテーブルにデータを入力するにはどうすればよいですか。これは正しいアプローチですか?私はバックウェブやページランク全体を作成しようとはしていません。関連性のある検索結果を絞り込みたいだけです。
提案をありがとう。