我正在尝试在我的网站上升级搜索。
我偶然发现了CONTAINS。
我已将要搜索的列设置为FULLTEXT。
我错过了什么?
title = Test is what i'm doing
SELECT * FROM test WHERE title LIKE "%Test%"
工作正常。
SELECT * FROM test WHERE CONTAINS('*', "'Test*'")
什么都不返回。
我试过了
SELECT * FROM test WHERE CONTAINS(title, "Test")
以及我能想到的其他一切。
包含所有东西的东西都没有返回。
这是我的表结构。
Action Keyname Type Unique Packed Column Cardinality Collation Null Comment
Edit Drop PRIMARY BTREE Yes No ID 15642 A
Edit Drop title FULLTEXT No No title 1 YES
我在这里缺少什么?
我正在使用MySQL 5.5
答案 0 :(得分:0)
CONTAINS仅在您拥有全文索引列时才有效。据推测,这还没有到位。
按照http://msdn.microsoft.com/en-us/library/ms142497上的说明进行操作,以帮助设置。
答案 1 :(得分:0)
title
列必须为CONTAINS
编制索引才能生效。 title
列是否已编入索引?
根据this post,使用包含关键字的通配符存在限制。
根据您的数据库实施情况,双引号可能会导致意外结果。将此更改为单引号是安全的。 (MSDN中的一些示例使用双引号和单引号,但外引号是单引号(与您的示例不同)。
您确定您的数据库中有哪些记录具有指定字符串“Test”?
根据http://forums.asp.net/t/1639440.aspx的其中一个回复,CONTAINS
运算符在SQL Express中不可用。您没有提到您正在使用哪个数据库,因此这可能适用也可能不适用。