BOOLEAN搜索MySQL不适用于某些单词

时间:2012-10-15 15:04:55

标签: mysql search boolean

我遇到布尔搜索的问题,首先我认为我的数据库/表有问题,但后来我尝试使用1列和样本值创建以下示例表,结果相同,它成功运行了一些单词和其他人,任何想法都失败了?

成功运行的查询:

SELECT * FROM `temp` WHERE (match (txt) against ('develo*' IN BOOLEAN MODE)>0 ) 
SELECT * FROM `temp` WHERE (match (txt) against ('devel*' IN BOOLEAN MODE)>0 ) 
SELECT * FROM `temp` WHERE (match (txt) against ('senio*' IN BOOLEAN MODE)>0 ) 

但是当我尝试对“第二个”或“第三个”字词进行类似搜索时,它会失败

SELECT * FROM `temp` WHERE (match (txt) against ('secon*' IN BOOLEAN MODE)>0 ) 
SELECT * FROM `temp` WHERE (match (txt) against ('third*' IN BOOLEAN MODE)>0 ) 

---以下是样本表和值-----

CREATE TABLE IF NOT EXISTS `temp` (
  `txt` varchar(30) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Dumping data for table `temp`
--

INSERT INTO `temp` (`txt`) VALUES
('developer'),
('Developer'),
('Developer senior'),
('senior developer'),
('second job'),
('job second'),
('third'),
('third job'),
('job third');

1 个答案:

答案 0 :(得分:2)

在BOOLEAN模式匹配中应用stopwords list时,引擎会忽略单词secondthird

您可以使用自己的默认停用词列表覆盖默认停用词列表,如here所述:

  

要覆盖默认的停用词列表,请设置ft_stopword_file系统   变量。 [...]变量值应该是文件的路径名   包含禁用词列表,或空字符串以禁用禁用词   过滤。除非,服务器在数据目录中查找该文件   给出绝对路径名以指定不同的目录。后   更改此变量的值或停用词的内容   文件,重新启动服务器并重建FULLTEXT索引。