我有一个包含413,000个地名的表(Pris,London,...)有没有办法(查询)从指定文本中选择位置。
例如:
“伦敦交通局(伦敦交通局)正在与其美国,澳大利亚和欧洲合作伙伴就为纽约巴黎发行单张非接触式卡片进行谈判”。
我想要查询:
* London
* Paris
* New York
我试过
SELECT name
FROM coutries
WHERE ("Transport for London (TfL) is in talks with its American, Australian and European partners about issuing a single contactless card for Paris, New York") LIKE CONCAT('%', name, '%');
它很慢而且没有给出确切的字样(巴黎,纽约,欧元,约克......)
我怎样才能准确得出确切的字?
答案 0 :(得分:3)
你最好将你的句子分成前/中端代码中的单词,然后执行类似
的操作SELECT name from countries where
name in ('Transport', 'for', 'London')
e.t.c 这样它将(尝试)使用索引(如果有的话)作为名称。
答案 1 :(得分:1)
你需要的是mysql全文搜索。 这应该有效:
SELECT name
FROM coutries
WHERE MATCH ("Transport for London (TfL) is in talks with its American, Australian and European partners about issuing a single contactless card for Paris, New York") AGAINST (name);
答案 2 :(得分:0)
执行此类查询很奇怪,您是否无法更改表的结构以匹配更简单的数据?
答案 3 :(得分:0)
以相反的方式做到:
选择* 来自国家 其中的文字如'%place1%'或类似'%place2%'...
使用for或while构建SQL,只是几个可行选项之一。