【问题标题】:mysql partial word searchingmysql部分词搜索
【发布时间】:2020-12-04 17:47:01
【问题描述】:

我想像下面的查询一样搜索,但它在 MySQL 中不起作用

 SELECT * FROM products WHERE MATCH (title,description) 
 AGAINST ('test' IN BOOLEAN MODE); 

我想要下面的输出

测试产品,产品测试

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: mysql full-text-search


    【解决方案1】:

    目前只支持前缀,不支持后缀:

    SELECT * FROM products WHERE MATCH (title,description) 
     AGAINST ('test*' IN BOOLEAN MODE); 
    

    http://dev.mysql.com/doc/refman/4.1/en/fulltext-boolean.html

    顺便提一下,当网站请求量大时,MySQL全文搜索会成为瓶颈,而对于一些特殊的搜索词,它很容易受到攻击且不稳定,因此经常会导致查询缓慢和数据库崩溃。尽快使用 Elastic Search。

    【讨论】:

    • 如果 AGAINST 中的 exp 不是单个词而是短语(某些词或词的一部分),那该怎么办?
    • 在处理大量搜索请求(例如电子商务 Web 应用程序)时,确实应该考虑使用 ElasticSearch 或 Redis 以获得更好的搜索性能
    【解决方案2】:

    使用 LOCATE 代替...或者更好的是,使用 Lucene 并忘记 MySQL 进行搜索。

    【讨论】:

    • MySQL 搜索有什么问题?我发现它非常非常好,我处理了数亿条记录。我有一种感觉,大多数人对 MySQL 以及这些问题了解不多。
    猜你喜欢
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多