我使用全文搜索来根据标签查询公司记录。
其中一家公司在tags
字段中包含以下字符串:
屋顶服务B2B建筑承包商&服务建设成立1982年Acclaim Contracts在伦敦东南部建立声誉,安全地提供屋顶一般建筑项目时间预算免费预算建筑合作伙伴客户方法咨询体贴工作推广团队目标响应灵活
我正在运行以下查询:
SELECT
company.domain,
company.company_name,
CONCAT_WS(
',',
company.business_sector,
company.tags
) AS 'tags',
GROUP_CONCAT(
employee.employee_id SEPARATOR ','
) AS 'employee_ids',
COUNT(employee.employee_id) AS 'employees',
COUNT(ct_connections.id) AS 'already_connected',
company.business_sector
FROM
company
INNER JOIN employee ON company.domain = employee.domain
LEFT JOIN ct_connections ON employee.email = ct_connections.email
AND ct_connections.client_id = 1
WHERE
MATCH (company.tags) AGAINST ('"xyz123 contracts"')
AND company.domain NOT IN (
'@hotmail.com',
'@gmail.com',
'@aol.com'
)
GROUP BY
company.domain
现在,从我向您展示的标签中,很明显不能匹配xyz123 contracts
,但是这个结果却以某种方式呈现给了我?怎么样?
答案 0 :(得分:0)
改为使用布尔搜索。
MATCH (company.tags) AGAINST ('+xyz123 +contracts"'IN BOOLEAN MODE)
这样两个词都必须存在。
使用您当前的语法,还会返回部分匹配(在您的情况下为合同)。
见
http://www.w3resource.com/mysql/mysql-full-text-search-functions.php