php mysql 关键字的搜索说明

php mysql search description for keywords

我正在创建一个用户上传图片并为其编写描述的网站。 我想让用户能够搜索他们想到的他们想要检索的图像的描述。

起初我决定将用户在上传图片时输入的描述转换为关键字,然后 link 将关键字转换为图片,在这种情况下,当用户稍后在他们输入的描述将被转换为关键字,并且将以某种方式为关键字生成同义词,所有这些都将针对数据库中的关键字进行搜索。

最近我读到 mysql 全文搜索。我创建了一个带有描述和图像 ID 的 table,并使用全文搜索功能尝试了几个查询,由于字长限制和停用词,它似乎在大多数搜索中都没有返回任何结果。 这是我的测试查询:

SELECT * FROM descriptions WHERE MATCH (description) AGAINST ('same' IN BOOLEAN MODE);

table 中有一个条目,其描述包含关键字 'same',但未返回任何结果。

我的问题是在描述 table 上使用 'LIKE %keywords%' 或在描述 table 上使用 FTS 还是坚持关键字 table 方法更好?

使用 LIKE,您可以使用三种方法。

1) 如果它以相同的顺序包含所有单词(关键词:一架飞机)

SELECT * FROM descriptions WHERE description LIKE('%One airplane%');

2) 如果它包含所有单词但顺序无关紧要

SELECT * FROM descriptions WHERE description LIKE('%One%') AND description LIKE('% airplane%');

3) 如果它包含一些单词

SELECT * FROM descriptions WHERE description LIKE('%One%') OR description LIKE('% airplane%');

现在您可以选择搜索的严格程度。

如果您想使用第二个或第三个实现,您将使用关键字 "space" 拆分字符串并为数组中的每个项目添加一个赞。