SQL Server全文搜索问题

时间:2011-09-16 12:20:04

标签: sql-server sql-server-2008 full-text-search containstable

我的全文搜索结果存在问题,我需要在name列中找到包含“spray”的行,而不是description列中包含“men”的行。

select top 10 ftt.RANK, ID, name, description
from mod_product_all_fields
INNER JOIN containstable(mod_product_all_fields,(name),' ("spray") ' )  as ftt
    ON mod_product_all_fields.ID=ftt.[KEY]
INNER JOIN containstable(mod_product_all_fields,(description),' not ("men")   ')  as ftt2
    ON mod_product_all_fields.ID=ftt2.[KEY] 
ORDER BY ftt.RANK DESC 

此查询未正确执行,调试器显示“not('men')”附近有语法错误。

如果您有解决方案,请告诉我

由于

1 个答案:

答案 0 :(得分:2)

扩展我关于如何搜索NOT <a word>的早期答案的指针,我认为这应该可以解决问题:

select top 10 ftt.RANK, ID, name, description
from mod_product_all_fields
INNER JOIN containstable(mod_product_all_fields,(name),' ("spray") ' )  as ftt
    ON mod_product_all_fields.ID=ftt.[KEY]
LEFT JOIN containstable(mod_product_all_fields,(description),' ("men") ')  as ftt2
    ON mod_product_all_fields.ID=ftt2.[KEY] 
WHERE
    ftt2.KEY IS NULL -- Eliminate matches on "men"
ORDER BY ftt.RANK DESC