我的全文搜索结果存在问题,我需要在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')”附近有语法错误。
如果您有解决方案,请告诉我
由于
答案 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