有人可以向我解释一下吗?我在下面有两个查询结果。
查询:
select * from tbl where contains([name], '"*he*" AND "*ca*"')
结果集:
赫兹汽车租赁
Hemingyway's Cantina
查询:
select * from tbl where contains([name], '"*he*" AND "*ar*"')
结果集:
没有
第一个查询是我所期望的,但我希望第二个查询返回“Hertz Car Rental”。我是否从根本上误解了“*”在全文搜索中的作用?
谢谢!
答案 0 :(得分:5)
我认为SQL Server将您的字符串解释为prefix_terms。星号不是普通的旧通配符说明符。 Fulltext和Contains是面向单词的。对于你想要做的事情,你最好使用普通的旧LIKE而不是CONTAINS。
答案 1 :(得分:4)
“*”仅作为后缀使用。如果您将其用作前缀,则无论如何都需要扫描表,并且索引无效。那时,你也可以这样做
Select * From Table Where (Name Like '%he%') And (Name Like '%ar%')
答案 2 :(得分:-1)
我会尝试用%替换*,看看它是怎么回事。
select * from tbl where contains([name], '"%he%" AND "%ar%"')