0

这是查询:

SELECT title from prod_table WHERE MATCH(title) AGAINST ('-Gears Of War' IN BOOLEAN MODE) limit 30;

该表肯定已填充,这是架构

SQL query: explain prod_table;
Rows: 22
Field           Type        Null        Key     Default     Extra
PRprodinfo_id   int(11)     NO          PRI     NULL    auto_increment
PRid            varchar(64) NO  UNI     NULL    
main_category   varchar(64) YES         NULL    
title           varchar(128)NO  MUL     NULL    
agegroup        varchar(16) YES         NULL    
author          varchar(128)YES         NULL    
sex             varchar(8)  YES         NULL    
actors          varchar(256)YES         NULL    
platform        varchar(64) YES         NULL    
artist          varchar(128)YES         NULL    
genre           varchar(128)YES         NULL    
description     text        YES         NULL    
manuf           varchar(128)YES         NULL    
manufID         varchar(64) YES         NULL    
prodcat         varchar(128)YES         NULL    
prodcatID       int(11)     YES         NULL    
userrating      decimal(1,1)NO      NULL    
profrating      decimal(1,1)NO      NULL    
lowprice        decimal(10,2)   NO      NULL    
highprice       decimal(10,2)   NO      NULL    
imageURL        varchar(128)    NO      NULL    
dateadded       timestamp       NO      CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP

也试过:

SELECT title from PRprodINFO WHERE MATCH(title) AGAINST ("-'Gears Of War'" IN BOOLEAN MODE) limit 30;

SELECT title from PRprodINFO WHERE MATCH(title) AGAINST ("'-Gears Of War'" IN BOOLEAN MODE) limit 30;

但他们有点抵消自己,一些结果是:

'Gears and Gear Cutting Workshop Practice'
'Gears of War 2 Signature Series Guide Bradygames Signature Guides'
'Gears of War 2 Last Stand Edition Guide Bradygames Signature'
'Cream  Disraeli Gears  Classic Albums DVD RETAIL BUT NOT AVAILABLE TO RENT'
'Gears of War 2 Limited Edition'
'Gears Of War'
'Gears of War 2'
'Gears of War Triple Pack'
'Gears of War 2 Game of the Year Edition'
'Gears of War 3 Limited Edition'
'Gears of War 3'

这正是我不想要的

我很难过 - 此外,在标题字段上有一个 FULLTEXT 索引。

谢谢

达伦

4

3 回答 3

0

不支持使用单个否定查询。阅读文档。它指出:

注意:- 运算符仅用于排除与其他搜索词匹配的行。因此,仅包含以 - 开头的术语的布尔模式搜索返回空结果。它不会返回“除包含任何排除项的行之外的所有行。”</p>

所以这是不可能的。您必须包含其他内容以供查询查找,以排除与 - 匹配的行。

只是我的意见,但我认为尝试返回与某个任意术语不匹配的所有行的列表过于密集。最好的解决方案是使用“like”查询,如下所示。

SELECT title from prod_table 
WHERE NOT title LIKE '%Gears Of War%' 
limit 30;
于 2011-10-17T12:54:16.580 回答
0

您将无法使用 MATCH AGAINST 运算符解决此问题。一个解决方案是否定 LIKE查询。例如:

SELECT title FROM prod_table WHERE title NOT LIKE '%Gears Of War%' LIMIT 30;
于 2011-10-17T13:08:31.243 回答
0

尝试这个:

SELECT title from prod_table WHERE MATCH(title) AGAINST ( "-'Gears Of War'" IN BOOLEAN MODE) limit 30;

在单词周围加上单引号。

于 2011-10-17T12:54:55.033 回答