我一直在尝试寻找有关使用 MySQL 的 FULLTEXT 搜索的帮助。我意识到这已经被讨论到死了,但我不太明白如何获得一组简洁的结果。
我有一个 MyISAM 表,其中包含 500,000 个产品,并在“product_name”表上设置了 FULLTEXT 索引。
一个基本的查询是:
SELECT * from products MATCH(product_name) AGAINST ("coffee table") AS relevance
WHERE MATCH(product_name) AGAINST ("coffee table").
我得到了一份与咖啡或餐桌相关的数百种产品的清单。这不够具体,意味着有用的结果与太多其他项目混在一起。
我更改了查询以使用 MATCH 为每个结果提供相关性,然后使用 LIKE 执行实际查询。
SELECT * from products MATCH(product_name) AGAINST ("coffee table") AS relevance
WHERE ((product_name like "%coffee%" AND product_name like "%table%") or product_name like "%coffee table%")
我从看到 Wordpress 如何执行搜索中得到这个想法。在有人使用更具体的关键字进行搜索之前,这种方法效果很好。一个真实的例子是搜索“Nike blazer low premium vintage”。在这种情况下,没有结果(而使用 MATCH 的第一个方法返回数百个)
我知道我可以使用 IN BOOLEAN MODE,但许多用户不知道使用 +/- 运算符来更改他们的查询。我还没有弄清楚我应该如何使用 HAVING 子句来限制结果。
此外,由于这是共享主机,我无法更改默认的最小字长 - 这意味着缺少关键字,例如颜色“红色”或品牌名称“GAP”。
我已经阅读了一些关于创建关键字索引表的内容,但还没有找到合适的参考资料。
有人可以提供一个解决方案,我可以使用产品搜索词(由 Joe Public 输入),这将给出一组简洁的结果。谢谢