我正在创建一个网站,用户上传图片,并为它写一个描述。我想让用户能够搜索他们想要检索的图像的描述。
首先,我决定将用户在上传图像时输入的描述转换为关键字,并将关键字链接到图像,在这种情况下,当用户在其输入的描述中执行描述搜索时,将被转换为关键字,并为关键字生成同义词,这些关键字将对DB中的关键字进行所有搜索。
最近我读到了mysql全文搜索。我创建了一个包含描述和图像ids的表,并使用全文搜索功能尝试了几个查询,由于字长限制和停止词,大多数搜索似乎都没有返回结果。下面是我的测试查询:
SELECT * FROM descriptions WHERE MATCH (description) AGAINST ('same' IN BOOLEAN MODE);表中有一个条目,其描述包含关键字“same”,但没有返回结果。
我的问题是,在描述表中使用'LIKE %关键字%‘还是在描述表上使用FTS更好,还是坚持使用关键字表方法?
发布于 2015-01-09 12:21:56
你有三种方法。
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%');现在,您可以选择对搜索有多严格。
如果您想使用第二个或第三个实现,您将用“空格”将字符串与关键字拆分,并为数组中的每个项添加一个like。
https://stackoverflow.com/questions/27860263
复制相似问题