9

我使用的是 SQL Server 2008。我已将表中的ProductName列索引Product为全文搜索索引。一些ProductName值作为示例:

ProductName
-------------
Iphone 3GS
Iphone 4S
Iphone 5S
Iphone 5

现在我正在使用以下代码搜索Product

WHERE CONTAINS (Product.ProductName, '"Iphone 4S"')

没关系!但是,如果我编辑并使用它:

WHERE CONTAINS (Product.ProductName, '"4S Iphone"')

没有结果!

你能帮我解决这个问题吗?谢谢。

4

5 回答 5

6

你想找出包含 Iphone,4S 的结果。所以你可以使用 OR 条件来得到结果。

WHERE CONTAINS (Product.ProductName, '4S  OR Iphone')

以下链接将有助于更好地理解。 http://blog.sqlauthority.com/2008/09/05/sql-server-creating-full-text-catalog-and-index/

于 2013-11-08T11:38:50.513 回答
2

听起来你会想在4SIphone之间使用NEAR 运算符。它搜索带有这些的单词,并且顺序可以是独立的。

WHERE CONTAINS (Product.ProductName, '"4S" NEAR "Iphone"')

您还可以使用波浪号 (~) 代替 NEAR 语句

WHERE CONTAINS (Product.ProductName, '"4S" ~ "Iphone"')
于 2014-08-29T20:57:43.120 回答
1

单独的搜索短语应包含在引号中。

如果您要比较 2 行的结果,您可能会找到您想要的结果:

WHERE CONTAINS (Product.ProductName, '"Iphone" and "4S"')

WHERE CONTAINS (Product.ProductName, '"4S" and "Iphone"')

这是因为您可能想要搜索涉及空格的组合:

WHERE CONTAINS (Product.ProductName, '"Sweet apple" or "Sour orange" or "Sour apple"')

在这种情况下,例如,您将无法找到甜橙。

关键是不要将您的搜索限制在单个单词上,而是实际上允许您需要不同的单词组合,如果您愿意的话。

于 2014-10-03T14:57:40.300 回答
0

然而,派对迟到了,想知道是否

自由文本

将解决 OP 的问题,而不是使用带有 AND/OR 的 CONTAINS,因为 FreeText 需要多个关键字进行搜索。

于 2017-04-11T10:08:32.667 回答
-4

你为什么不去:

 product.ProductName like '%3GS%'
 product.ProductName like '%4S%'

如果你想更准确,那么:

 where product.ProductName like '%4S%'
       and product.ProductName like '%Iphone%'
于 2013-11-08T13:47:00.393 回答