MySQL查询-基于权重的搜索引擎

MySQL查询-基于权重的搜索引擎,mysql,optimization,search-engine,Mysql,Optimization,Search Engine,以下是医疗MIS表的数据库结构: 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_exper

以下是医疗MIS表的数据库结构:

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万条记录。用户可以使用两个字段进行搜索:

  • 关键词
  • 位置
  • 根据得分,关键字被查询到
    med\u title
    med\u company\u name
    med\u description\u short
    med\u 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
    
    假设我搜索“hello world”,我知道应该有基于以下内容的权重:

  • 标题的权重最高
  • 公司名称的权重将小于标题,但大于描述
  • 说明将具有最小的权重

  • 请帮助获得一个SQL查询来考虑所有这些权重并有效地搜索。

    < P>考虑转向狮身人面像以获得满意的解决方案。
    有500万行,以及您的需求,MySQL全文搜索的性能将令人失望

    即使有50万条记录,你也会提出同样的建议吗?不过,数据库将继续增长。另外,关于我的具体案例中使用狮身人面像的具体信息,请参见以下问题: