代码之家  ›  专栏  ›  技术社区  ›  NeomerArcana

如何选择文本字段与另一个字段大致匹配的行?

  •  0
  • NeomerArcana  · 技术社区  · 11 月前

    我正在使用SQLlite。

    我有一张这样的桌子

    | Name               | Data 
    |--------------------|--------------
    | Nestle Milo 1kg    | ABC
    | Milo Chocolate 1kg | DFE
    

    我想选择所有在这方面“大致匹配”的行 name 列。在这个例子中,它们都以“米洛”和“1公斤”为特色。也许选择结果会给出“比赛分数”或类似的东西?

    我在现实世界中的用例是,我已经在两家主要杂货店的在线目录中搜索了价格。我现在想比较一下这两家商店的商品价格。然而,他们不共享SKU/标识符,即使是被刮擦的名称也不一致,尽管很明显两家商店之间的产品名称有很多共同点。

    1 回复  |  直到 11 月前
        1
  •  0
  •   Jean-louis Dikasa    11 月前
    1. 使用带有通配符的LIKE运算符

    如果你想要一个更简单的解决方案,并且可以容忍较低的精度,你可以使用带通配符的LIKE运算符。这种方法不太灵活,但可用于简单的匹配。

    -- Example query using LIKE operator
    SELECT
      Name,
      Data
    FROM
      your_table
    WHERE
      Name LIKE '%Milo%' AND Name LIKE '%1kg%';
    
    1. 全文搜索(FTS)

    SQLite支持全文搜索(FTS),可用于在文本中搜索术语。它不会给你一个相似性评分,但对于查找包含相似术语的行很有用。

    -- Example query using FTS
    SELECT
      Name,
      Data
    FROM
      your_table_fts
    WHERE
      Name MATCH 'Milo AND 1kg';