私は現在、次のフィールドと一致するデータベース テーブルを検索する必要がある Web サイトを開発していますbooks_for_sale
: isbn_10
、isbn_13
、name
、author
、。publisher
description
結果を関連性でソートできるように、各フィールドに重みを付ける必要があります。
次の関連性乗数を使用したいと思います。
`isbn` = $searchTerm (30 relevance factor)
`isbn` LIKE $searchTerm% (25 relevance factor)
`name` = $searchTerm (20 relevance factor)
`name` LIKE $searchTerm% (15 relevance factor)
`name` LIKE %$searchTerm% (10 relevance factor)
`author` LIKE $searchTerm (22 relevance factor)
`author` LIKE $searchTerm% (14 relevance factor)
`author` LIKE %$searchTerm% (1 relevance factor)
`description` LIKE %$searchTerm% (2 relevance factor)
`publisher` LIKE %$searchTerm% (1 relevance factor)
現在のテーブル SQL:
--
-- Table structure for table `books_for_sale`
--
CREATE TABLE IF NOT EXISTS `books_for_sale` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`seller_id` int(11) NOT NULL,
`isbn_10` varchar(10) NOT NULL,
`isbn_13` varchar(13) NOT NULL,
`name` int(11) NOT NULL,
`price` int(11) NOT NULL,
`image_id` int(11) NOT NULL,
`condition_id` int(11) NOT NULL,
`author` varchar(50) NOT NULL,
`publisher` varchar(50) NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`id`),
KEY `isbn_10` (`isbn_10`),
KEY `isbn_13` (`isbn_13`),
KEY `name` (`name`),
KEY `author` (`author`),
KEY `seller_id` (`seller_id`),
KEY `publisher` (`publisher`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Google でさまざまな機能を検索しようとしましたが、役に立つものを見つけることができませんでした。誰かが私を助けてくれれば、私はまだより高度な MySQL 機能に慣れていないので、大いに感謝します。
PS このタイプの検索機能をより適切にサポートするためにテーブルを再構築する必要がある場合は、お知らせください。