【问题标题】:How to look for similar words inside a text field in MySQL? [duplicate]如何在 MySQL 的文本字段中查找相似的单词? [复制]
【发布时间】:2023-03-17 07:46:02
【问题描述】:

我有一个表名Users,每个用户在Hobbies 列中都有自己的爱好。我想找到匹配hobbiesusers

爱好是这样存储的:

id | username | hobbies
 1 | Ben      | Hiking, Surfing
 2 | Jane     | Surfing,
 3 | Dan      | Reading

我想按匹配用户的爱好对表格进行排序 - 所以结果将类似于:

HobbieName (Surfing) | id | username
                    | 1  | Ben
                    | 2  | Jane

是否可以使用MySql 查询或我应该按PHP 对数据进行排序?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我不会从给定的数据集中这么说,多表布局会使其​​成为一个简单的过程,用户、爱好、用户爱好

    在用户中,您只需要包含唯一 ID (user_id) 的用户数据。 在爱好中,您只需要爱好名称和唯一的 id (hobby_id)。 在 UserHobbies 中,您需要 id、user_id、hobby_id。

    通过此设置,每个用户在 UserHobbies 中都有多行,每个用户爱好一个。 你先得到用户的爱好,然后加入 user_id 上的用户和 hobby_id 上的爱好。

    这为您提供了一个数据集,然后您可以按照自己的顺序进行排序,因此在这种情况下,如果您想按字母顺序显示,请按爱好 id 或 hobby_name 排序。

    这应该可以帮助您在正确的方向上构建数据库以及随后的查询。

    通过使用多个表,您还可以在以后以类似方式包括其他方面,而无需更改您当前持有的数据。

    【讨论】:

    • 谢谢,所以如果我理解正确,你建议创建另外 2 个表,Hobbies 和 UserHobbies,它们的 id 将用作外键,所以当我寻找用户时 - 然后我'将加入 2 张桌子并获取爱好的 ID - 然后我将能够展示它们......我正在寻找更简单的方法......但如果我没有其他选择,那就是我'会的 - 谢谢。
    • 公平地说,它并没有变得容易得多,除非您的爱好数量有限并且不会增加更多。您可以通过将用户爱好 ID 作为序列化列表放入文本字​​段或其他一些数据库安全方法来使用两个表。但是你必须在你的 php 中处理每个用户的每个爱好领域,通常最好将数据收集交给数据库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多