使用PHP从MySQL数据库中选择可能相关的项目(例如:对于“橙色”,给出“面包”)


Select items that may be related (like: for 'orange', give 'bread') from MySQL database using PHP

我有一个系统,我必须在其中选择"相似"的记录。想象一个包含大量产品列表的数据库,当用户输入产品的部分名称时,会出现一个产品列表作为关于他正在搜索的产品的建议。这些产品也有更长的描述字段。

我认为,这不是关于WHERE product_name LIKE '%entered_string%'查询。该逻辑类似于 Stack Overflow 可能使用的逻辑,id est:当您提出问题时,它会提示您可能已经有您答案的问题和类似问题,两者都显然使用一种方法从我的问题标题/内容中得出我想问的内容,并根据数据库进行搜索,显示结果。

我只是想知道它是否可以使用 PHP 并使用 MySQL 作为数据库来完成。

例:输入food应该给我们这样的结果 1kg orangesbreadcookies .这两者都有类似的东西,可以帮助以编程方式将它们相互链接。

有很多方法可以处理这种情况。 但我认为直接的方法是将多个关键字/标签映射到每个项目。 因此,当用户键入时,您不会搜索项目表,您应该搜索映射的关键字并基于该搜索加载相关项目。

如果您希望显示类似的产品,则需要将该信息放入数据库中。因此,为食品创建一个类别,并将每种食品分配给该类别。这样您就可以轻松选择类似的产品。没有其他有效的方法可以做到这一点

所以你的数据库:

categories:
|id|name
 1    fruit
 2    Cars
Products
|id|name|category_id
  1  apple 1
  2  Ford focus  2

你可以像这样选择:

SELECT `name`,`id` FROM `products` WHERE category_id = 1;

另一种方式(如评论中建议的)是标签

Products
|id|name|tags
  1  apple "fruit food delicious" 
  2  Ford focus  "Car wheels bumper"

最好的方法是对标签使用全文搜索:

SELECT * FROM `products` WHERE MATCH(tags) AGAINST ('fruit')

确保标记上有全文索引。

相关文章: