mysql全文搜索和特殊字符
问题描述:
我正在使用带有全文索引的php + mysql。 我在我想搜索的字段中包含以下内容:mysql全文搜索和特殊字符
“您好:这是测试!”
“你好,我也是考验!”
当我搜索“hello:”时,它找到两行。 但它应该只找到第一行 - 至少直到我搜索“你好%”。 冒号似乎不被视为“正常”charakter。
答
这可能会很晚,但我不能重现您的问题。
我有一个表,你的两个条目:
Table: Test
ID Note
-- ---------
1 Hello: it's a test!
2 Hello i am also a test!
如果我运行了第一个搜索SELECT * FROM test t WHERE Note LIKE "Hello:"
我得到0行的结果,如预期的,因为在这种情况下,LIKE查找与整场完全匹配。
如果我跑你的第二个声明SELECT * FROM test t WHERE Note LIKE "Hello:%"
我得到一个行回来:
ID Note
-- ---------
1 Hello: it's a test!
你确定你已经安装了全文索引表吧?
首先,您的Table引擎必须是MyISAM表。然后,您需要为FULLTEXT类型的列创建索引(索引)(在我的示例中为Note)。
为什么不能找到“你好:这是一个测试”“你好:”?如果您希望搜索不区分大小写,则必须对索引列使用二进制排序规则(以* _bin *结尾) – Konerak 2010-05-26 08:14:33
@Konerak:但是二进制排序规则会使搜索条件敏感*和ben搜索已经不区分大小写。他只是在寻找一种只搜索单词的方法。 – pinkgothic 2010-05-26 08:18:02
如果查询包含特殊字符,为什么不直接返回null? – Amarghosh 2010-05-26 08:27:21