我有一个问题:
$get_co = 'example';
$get_co_domain = 'example.com';
$getmerid = mysql_query("SELECT id,title,domain,name,alternative_name,company_name,trading_name FROM companies
WHERE (title = '$get_co')
OR (domain = '$get_co_domain')
OR (name = '$get_co')
OR (alternative_name = '$get_co')
OR (company_name = '$get_co')
OR (trading_name = '$get_co')
LIMIT 0, 1");
在我的表中,假设我有两个标题为'example'的条目,但域名为'example.com'和'example.co.uk'。
目前,由于LIMIT,它只会匹配其中一个,但它可能会选择'example.co.uk'行。
有没有办法可以按照评分类型的方式对结果进行排序,以便根据某些标准(即域名或公司名称)选择最相关的结果。
答案 0 :(得分:1)
仅供参考,您的查询可以按如下方式重写:
SELECT id
, title
, domain
, name
, alternative_name
, company_name
, trading_name
FROM companies
WHERE '$get_co' IN(title,name,alternative_name,company_name,trading_name)
OR domain = '$get_co_domain'
ORDER
BY id
LIMIT 0, 1
答案 1 :(得分:1)
对于快速模糊文本搜索,我建议使用名为 Jaro / Winkler 的算法。几年前我自己遇到过这种问题 - 这是我写的一篇博文。 http://dannykopping.com/blog/fuzzy-text-search-mysql-jaro-winkler
您可以根据0 - 100%
的“相似性”因素对结果进行排序