【问题标题】:Mysql string indexMysql 字符串索引
【发布时间】:2014-11-06 07:42:29
【问题描述】:

我需要一个 mysql 查询来进行姓名和姓氏的文本搜索...这是查询:

SELECT * FROM people WHERE CONCAT(name,' ',surname) like 'John%'
or CONCAT(name,' ',surname) like '% John%'; --mind the space in second like

这个查询应该找到“John Fox”和“Fox John”和“John Fox Joe”和“Joe John Fox”等等。 这很好用,但对于大表,我认为我应该添加和索引......我对吗? 我读到 btree 索引仅对 like 'John%' 语法有用,对 like '% John%' 无效。因此,为新索引添加由 CONCAT(name,' ',surname) 组成的新列可能没有用处。

我想知道解决这个文本搜索问题的最佳方法是什么。

PS:我使用的是innodb表,所以不能使用全文索引。

【问题讨论】:

    标签: mysql sql indexing text-search


    【解决方案1】:

    也许你应该升级到 mysql 5.6,其中 InnoDB 支持 FULLTEXT。

    http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html

    【讨论】:

    • 几年前我在myisam中使用全文,我发现像'and' 'the'等停用词有些问题,因为它们被搜索引擎忽略了。我的搜索应该包括那个词,这是可配置的吗?
    • 您可以更改每个表的停用词:dev.mysql.com/doc/refman/5.6/en/fulltext-stopwords.html
    猜你喜欢
    • 2015-11-17
    • 2011-09-23
    • 2018-01-09
    • 2011-08-13
    • 1970-01-01
    • 2017-01-27
    • 2021-07-20
    • 2010-10-27
    • 2015-04-23
    相关资源
    最近更新 更多