0
這是一種醫療MIS表的數據庫結構:MySQL查詢 - 重量爲基礎的搜索引擎
CREATE TABLE IF NOT EXISTS `ab_med` (
`med_id` bigint(20) NOT NULL AUTO_INCREMENT,
`med_title` varchar(200) DEFAULT NULL,
`med_posted_date` varchar(200) DEFAULT NULL,
`med_company_name` varchar(200) DEFAULT NULL,
`med_experience` varchar(200) DEFAULT NULL,
`med_salary` varchar(200) DEFAULT NULL,
`med_city` varchar(200) DEFAULT NULL,
`med_description_short` text,
`med_details_link` varchar(500) DEFAULT NULL,
`med_from_city_type` int(1) NOT NULL DEFAULT '1',
`med_from_city` varchar(255) DEFAULT NULL,
`med_collected_time` datetime DEFAULT NULL,
`med_status` int(1) NOT NULL,
PRIMARY KEY (`med_id`),
KEY `MedCity` (`med_city`),
KEY `MedTitle` (`med_title`),
KEY `MedCompany` (`med_company_name`),
KEY `MedExperience` (`med_experience`),
KEY `med_details_link` (`med_details_link`),
FULLTEXT KEY `med_index` (`med_title`,`med_company_name`,`med_description_short`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=639295 ;
大約有50萬條記錄。用戶可以搜索使用2個字段:
- 關鍵字
- 位置
關鍵字被看着med_title
,med_company_name
,med_description_short
,med_city
按照得分。
位置是看着med_city
我使用全文搜索的MySQL,但我需要最新的條目用更好的成績出現。我沒有得到它的SQL查詢。我使用下面的SQL查詢:
SELECT distinct(med_details_link),med_id,med_title,med_posted_date,med_company_name,med_description_short,med_from_city,med_experience,med_city,med_collected_time,MATCH (med_title,med_company_name,med_description_short) AGAINST ('+hello +world' IN BOOLEAN MODE) as score
FROM ab_med
WHERE MATCH (med_title,med_company_name,med_description_short) AGAINST ('+hello +world' IN BOOLEAN MODE) order by med_id desc limit 1000
想我搜索「世界你好」,我的理解,應該根據是重量:
- 冠軍將有最高的權重
- 公司名字會比標題比說明重量更輕但更
- 說明將有至少重量
請幫助獲取SQL查詢以考慮所有這些權重並進行有效搜索。
即使有50萬條記錄,您是否也會提出相同的建議?數據庫將沿着這條線延伸。此外,關於使用獅身人面像的具體情況的具體信息? – dang
看到這個問題:http://stackoverflow.com/questions/5036666/guide-to-using-sphinx-with-php-and-mysql –