【发布时间】:2010-05-11 13:45:04
【问题描述】:
我正在尝试对我为其创建视图的两列执行全文搜索:供应商名称、产品名称。我有全文索引等工作,但实际查询是什么给我造成了一些问题。
我希望用户能够使用一些标准的搜索约定,AND OR NOT 和按 () 对术语进行分组,这很好,但我想在两列上都应用搜索,例如,如果我要运行查询如:
SELECT * FROM vw_Search
WHERE CONTAINS((VendorName, ProductName), "Apple AND iTunes")
似乎将查询单独应用于每一列,即检查两个术语的供应商名称,然后检查两个术语的产品名称,除非供应商被称为“Apple iTunes”,否则它们将不匹配。
如果我将查询更改为:
SELECT * FROM vw_Search
WHERE CONTAINS(VendorName, "Apple OR iTunes")
AND CONTAINS(ProductName, "Apple OR iTunes")
然后它可以工作,但会破坏其他搜索查询(例如仅搜索苹果),并且从用户编写查询来看,它没有多大意义,因为他们可能写的是 AND,但它需要 OR 才能工作。
如果两者之间的搜索词是有效的,我想要返回它,这样它将匹配所有名为 apple 的供应商和产品名称 itunes。
我应该在视图中创建一个单独的字段来连接 Vendor 和 Product 字段并对该新字段执行第一个查询,还是我遗漏了什么?
除此之外,还有人知道验证查询的现有方法吗?
【问题讨论】:
标签: sql-server full-text-search