【问题标题】:Mysql - Select words from specified textMysql - 从指定文本中选择单词
【发布时间】:2010-10-11 09:07:35
【问题描述】:

我有一个包含 413,000 个地点名称的表(Pris、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, '%');

它很慢,不要给出确切的词,例如 (Paris, New York, Euro, York ...)

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

【问题讨论】:

  • @user,你不能在发送到 SQL 之前分割你指定的文本吗?

标签: php text mysql sql-like


【解决方案1】:

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

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

e.t.c 这样,它将(尝试)使用索引(如果有的话)作为名称。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        反其道而行之:

        1. 从原始文本中提取重新排列的字符串
        2. 制作一个简单的 SQL。

        选择 * 来自国家 其中像 '%place1%' 或 '%place2%' 这样的文本...

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-07
          • 2019-04-18
          • 2013-02-02
          • 2012-08-15
          • 1970-01-01
          • 1970-01-01
          • 2017-07-18
          • 2020-02-09
          相关资源
          最近更新 更多