将动态搜索术语数组连接到PHP / MySQL中的字符串

时间:2017-02-12 13:44:55

标签: php mysql arrays laravel

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

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

实施例:**

'bird' -> bird

'Vogel' -> bird

'pájaro' -> bird

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

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

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

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

然后搜索第二个表中的所有术语,如果找到,则为第一个中相应的实际字符串匹配。

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

由于我处理的语言并不总是彼此保持密切联系,因此我无法依赖拼写检查程序等内容。

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

1 个答案:

答案 0 :(得分:1)

1桌怎么样:

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

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

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