【问题标题】:MySQL Full Text Search Returning 0 ResultsMySQL 全文搜索返回 0 个结果
【发布时间】:2013-07-20 15:29:49
【问题描述】:

我刚刚在我的 MySQL 数据库上设置了全文索引,但不幸的是它没有返回任何结果。

这似乎是一个常见问题,典型的答案是使用 MyISAM 引擎和“IN BOOLEAN MODE”功能。好吧,这些似乎都不适合我。

这是我的示例代码:

DROP TABLE IF EXISTS parentregionlist;
CREATE TABLE parentregionlist
(
    RegionID INT NOT NULL,
    RegionType VARCHAR(50),
    RelativeSignificance VARCHAR(3),
    SubClass VARCHAR(50),
    RegionName VARCHAR(255),
    RegionNameLong VARCHAR(510),
    ParentRegionID INT,
    ParentRegionType VARCHAR(50),
    ParentRegionName VARCHAR(255),
    ParentRegionNameLong VARCHAR(510),
    CountryCode VARCHAR(2),
  TimeStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (RegionID),
    FULLTEXT (RegionNameLong)
) ENGINE = MyISAM;

INSERT INTO parentregionlist
VALUES (575, 
"City", 
"", 
"", 
"Birmingham", 
"Birmingham, England, United kingdom", 
6023342, 
"Multi-City (Vicinity)", 
"Birmingham (and Vicinity)", 
"Birmingham (and vicinity), England, United Kingdom", 
"", 
now());

SELECT * 
FROM parentregionlist
WHERE MATCH(regionnamelong) 
AGAINST ('Birm' IN BOOLEAN MODE);

有什么想法吗?

附:在真实表中,我有 200k+ 行。我知道搜索不会只使用一行,这只是一个示例。

【问题讨论】:

    标签: mysql full-text-search full-text-indexing


    【解决方案1】:

    使用当前查询,您正在寻找一个完整的单词匹配。因此,例如要插入上面显示的行,您需要执行以下操作:

    SELECT * 
    FROM parentregionlist
    WHERE MATCH(regionnamelong) 
    AGAINST ('Birmingham (and vicinity), England, United Kingdom' IN BOOLEAN MODE);
    

    但是,如果您想搜索以“Birm”开头的所有结果,则需要添加“*”修饰符:

    SELECT * 
    FROM parentregionlist
    WHERE MATCH(regionnamelong) 
    AGAINST ('Birm*' IN BOOLEAN MODE);
    

    或者你也可以使用 LIKE:

    SELECT * 
    FROM parentregionlist
    WHERE regionnamelong LIKE 'Birm%';
    

    MySQL 文档提供了很好的 MATCH 示例以供使用: http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 2015-05-11
      相关资源
      最近更新 更多