2010-10-11 47 views
1

我有一个包含413,000个地名(Pris,London,...)的表有没有一种方法(查询)从指定文本中选择位置。Mysql - 从指定文本中选择单词

例如:

“伦敦交通局(TfL)交通运输与有关颁发了巴黎,纽约单一的非接触式卡的美国,澳大利亚和欧洲伙伴的谈判”。

我要查询来获取:

* 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

@user,你不能在将它发送到SQL之前分割指定的文本吗? – Tom 2010-10-11 09:12:59

回答

0

有这样的查询执行是奇怪的,你不能改变你的表结构匹配更简单的数据?

3

你想你的句子最好分成的话你的前/中端的代码,这样做

SELECT name from countries where 
name in ('Transport', 'for', 'London') 

等 这样,它会(尝试)使用索引(如果有的话)名字。

0

就做相反的方式:

  1. 从原始文本
  2. 提取rearched字符串做一个简单的SQL。

SELECT * 从国家 其中LIKE '%PLACE1%' 或LIKE '%place2%' ......

文本构建一个用SQL的或同时,只是几个可行的选择之一。

1

你需要的是全文搜索。 这应该工作:

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); 
+0

+1 ...并且现在仅适用于MyISAM存储 – Unreason 2010-10-11 11:26:02

相关问题