Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql-从指定文本中选择单词_Php_Text_Mysql_Sql Like - Fatal编程技术网

Php Mysql-从指定文本中选择单词

Php Mysql-从指定文本中选择单词,php,text,mysql,sql-like,Php,Text,Mysql,Sql Like,我有一个包含413000个地名(Pris,伦敦,…)的表。是否有方法(查询)从指定文本中选择位置 例如: “伦敦交通局(Transport for London,TfL)正与其美国、澳大利亚和欧洲合作伙伴就为巴黎、纽约发行单一非接触式卡进行谈判。” 我希望查询得到: * London * Paris * New York 我试过了 SELECT name FROM coutries WHERE ("Transport for London (TfL) is in talks with it

我有一个包含413000个地名(Pris,伦敦,…)的表。是否有方法(查询)从指定文本中选择位置

例如:

“伦敦交通局(Transport for London,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, '%');
它的速度很慢,而且没有给出确切的单词,比如(巴黎、纽约、欧元、纽约……)


我怎样才能得到精确的单词呢?

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

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

你最好在前端/中间端代码中将句子拆分成单词,然后做一些类似的事情

SELECT name from countries where 
name in ('Transport', 'for', 'London')
e、 t.c
通过这种方式,它将(尝试)使用索引(如果有的话)作为名称。

您最好在前端/中间端代码中将您的句子拆分为单词,然后执行以下操作

SELECT name from countries where 
name in ('Transport', 'for', 'London')
e、 t.c
这样,它将(尝试)使用索引(如果有)作为名称。

使用相反的方法:

  • 从原始文本中提取重新归档的字符串
  • 制作一个简单的SQL
  • 选择* 来自各国 其中类似“%place1%”或类似“%place2%”的文本


    使用for或while构建SQL,这只是几个可行选项中的一个。

    以相反的方式进行:

  • 从原始文本中提取重新归档的字符串
  • 制作一个简单的SQL
  • 选择* 来自各国 其中类似“%place1%”或类似“%place2%”的文本


    使用for或while构建SQL,这只是几个可行选项之一。

    您需要的是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);
    

    您需要的是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);
    

    @用户,您不能在将指定文本发送到SQL之前拆分它吗?@user,您不能在将指定文本发送到SQL之前拆分它吗?