所以我有一个MySQL数据库,里面有一个公司名称表。例如
AES Corp
我输入了我的stopwords.txt
Corp
然而,当我进行全文搜索时,它仍会返回这样的结果,
select * from companies where MATCH(listOfCompanies.name) AGAINST('AES Corp');
SHANGHAI FOREIGN TRADE CORP. PU D
GFT USA CORP.
GFT USA CORP.
QET, CORP.
FUN-4-ALL CORP.
它不应该返回任何结果,因为我过滤掉了Corp因此它只是试图匹配AES吗?或者我误解了全文检索的工作原理?
答案 0 :(得分:0)
我认为您误解了AGAINST
关键字。查看您链接的页面上提供的示例查询 - 关键字出现在两个结果行中。 AGAINST
不会使用指定的关键字过滤掉结果,而是反过来 - 查看指定的列以确保匹配:http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html
答案 1 :(得分:0)
我已经弄清楚我做错了什么,这是一个非常尴尬的错误。搜索实际上是按配置工作的,我只是使用脚本来解析和上传数据,它使用的是UPDATE,因此它实际上并没有删除旧的结果。我应该把桌子倒空,让它重新填充。