【问题标题】:Query for similar phrases查询相似短语
【发布时间】:2020-02-18 20:12:31
【问题描述】:

有没有办法在 SQL 中将“United States of America”与“United States”匹配?

我在数据库中存储了名为“美国”的国家/地区。 下面的查询应该从数据库中检索名为“United States”的项目。

SELECT * FROM `countries` WHERE `name` LIKE '%United States of America%'

谢谢!

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    这是你想要的吗?

    where 'United States of America' like concat('%', name, '%')
    

    【讨论】:

      【解决方案2】:

      对于这种情况,您应该查看弹性搜索数据库。它具有部分过滤器的功能。

      否则您可以通过动态 sql 执行以下操作:

      1. 用空格/分隔符分割字符串
      2. 对给定的单词使用连接(1 表示匹配,0 表示不匹配)
      3. 匹配的总数(您可以通过 sum 操作数旋转或定位列,但由于您已经要使用动态 sql,因此将目标命名列中的值相加可能更简单)
        • 如果总匹配数 = 字数,则表示绝对匹配(100% 匹配,可能出现顺序错误)
          • 对于非绝对匹配,通过除以总和/字数来计算确定性(绝对是 100%)
      4. 为此列表选择顶部 (1),按原词分组,并按确定性排序。

      或者,您可以按照@Gordon 所说的那样做一个更简单的一次性解决方案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-29
        • 1970-01-01
        • 1970-01-01
        • 2015-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多