【问题标题】:Connect dynamic array of search terms to string in PHP / MySQL将搜索词的动态数组连接到 PHP / MySQL 中的字符串
【发布时间】:2017-06-30 12:11:57
【问题描述】:

使用 Laravel 5.3 和 MySQL 5.7.17。 我将文本存储在 TEXT 列中(不知道限制)。

**我想在此文本中搜索不同语言中不同单词的不同变体,这些变体应该导致相同的匹配。

示例:**

'bird' -> bird

'Vogel' -> bird

'pájaro' -> bird

尝试 #1: 设置一个有两列的表:

  • c1 包含字符串'bird'
  • c2 包含一个带有所有替代搜索词的序列化数组。然后,在大文本中搜索未序列化数组的所有替代搜索字符串。

优点:只需要一张桌子 缺点:一直序列化和反序列化数据 - 性能不佳?

尝试#2:设置两个表,其中一个包含我将用于我的代码的真实、正确的搜索词。第二个包含所有通过 Laravel 中的“一对多”关系链接的替代搜索词。

然后搜索第二个表中的所有术语,如果找到,给我匹配第一个表中对应的真实字符串。

优点:可能性能更好 缺点:两个不同的表。

由于我处理的单词之间并不总是有密切的联系,所以我不能依赖像 spell checker 这样的东西。

无论如何都想手动管理替代搜索词库。有更好的解决方案吗?

【问题讨论】:

    标签: php mysql arrays laravel


    【解决方案1】:

    一张桌子怎么样:

    • c1 包含可能的搜索词的索引列表
    • c2 包含标准化的搜索词

    我猜想 VARCHAR 会比 TEXT 支持更好的索引。是否有上限(50 个字符?100 个字符?)?

    | c1       | c2         |
    |----------+------------|
    | bird     | bird       |
    | vogel    | bird       |
    

    【讨论】:

    • 那肯定能胜任。我想了很多,以至于我没有看到那个解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多