我正在创建一个网站,用户上传图像并为其编写说明。 我想让用户能够搜索他们想要检索的图像的描述。
首先,我决定转换用户输入的描述,同时将图像上传到关键字并将关键字链接到图像,在这种情况下,当用户稍后搜索描述时,他们输入的描述将被转换关键字和某种方式将为关键字生成同义词,这些关键词将全部搜索到数据库中的关键字。
最近我读到了关于mysql全文搜索的内容。我创建了一个包含描述和图像ID的表格,并使用全文搜索功能尝试了几个查询。由于字长限制和停用词,似乎在大多数搜索中都没有返回结果。 这是我的测试查询:
SELECT * FROM descriptions WHERE MATCH (description) AGAINST ('same' IN BOOLEAN MODE);
表格中有一个条目,其中包含关键字'相同的'但没有结果返回。
我的问题是,最好使用' LIKE%关键字%'在描述表上或在描述表上使用FTS或坚持使用关键字表方法?
答案 0 :(得分:0)
有了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”将关键字分割为字符串,并为数组中的每个项目添加类似的内容。