我正在尝试对我为其创建视图的两列实施全文搜索:VendorName、ProductName。我有全文索引等工作,但实际查询是导致我出现一些问题的原因。
我希望用户能够使用一些标准搜索约定、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")
那么它可以工作,但会破坏其他搜索查询(例如仅搜索 apple),并且从用户编写查询来看,它没有多大意义,因为他们可能会编写 AND,但它需要 OR 才能工作。
我想要的是如果两者之间的搜索词有效,它就会返回,这样它就会匹配所有名为 apple 的供应商和产品名称 itunes。
我是否应该在视图中创建一个单独的字段来连接供应商和产品字段并在该新字段上执行第一个查询,或者是否有我遗漏的内容?
除此之外,有人知道验证查询的现有方法吗?
在早期版本中SQL Server
,查询在多个列中匹配。
然而,这被认为是bug.
要跨多个列进行匹配,您应该将它们连接在计算列中,并在该列上创建索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)