私はmysqlにテーブルを持っています。約 100 の Web サイトのリンク、タイトル、説明、およびキーワードが含まれています。すべてのサイトにキーワード フィールドがあるわけではありません。私は自分で書いた Web クローラーで Apple.com をクロールし、Apple のサイトの大部分をインデックスに登録しました。
テーブルを検索エンジンにリンクしましたが、問題がありました。私が使用していたコードは関連性でソートされません。つまり、ユーザーが検索エンジンに「Apple」と入力すると、かなりランダムな結果が返されるということです。「iPad を購入」と入力すると、アップル ストアの代わりに iPad が表示されます。クエリですべてのフィールドをスキャンして、各ユーザー入力がフィールドに入力された回数を確認し、最も関連性の高い順にランク付けする必要があります。*衝突が発生した場合は、ID が大きい方が優先されます...基本的には。
ところで、iphone または ipad と入力すると、正しい結果が表示されます。私は別々の用語と一緒に2つの異なるクエリを持っており、それらを組み合わせて1つのクエリにする方法も知りたいです.
Terms together:
$query = " SELECT * FROM scan WHERE ";
$terms = array_map('mysql_real_escape_string', $terms);
$i = 0;
foreach ($terms as $each) {
if ($i++ !== 0) {
$query .= "AND";
}
$query.= "Match(title, description, keywords, link) Against ('".implode(' ', $terms )." in boolean mode);
}
Terms Seperate
$query = " SELECT * FROM scan WHERE ";
$terms = array_map('mysql_real_escape_string', $terms);
$i = 0;
foreach ($terms as $each) {
if ($i++ !== 0) {
$query .= "or";
}
$query.= "Match(title, description, keywords, link) Against ('".implode(' ', $terms )." in boolean mode);
}