3

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

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

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

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

4

2 回答 2

3

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

于 2012-08-17T16:11:25.353 回答
2

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

所以你的数据库:

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')

确保在标签上有全文索引。

于 2012-08-17T16:09:09.963 回答