0

我想在全文列中搜索以下两个术语:

2011
J Vineyards

我将谓词构造为

"2011*" and "j vineyards*"

不返回任何行。

应该匹配的记录是

2011 j vineyards viognier alexander valley united states

经过实验,似乎与单个“j”字符有关。

编辑:

这是全文列 BeverageSearchData 的选择语句。

Declare @test nvarchar(100);
Set @test='""2011*" and "j vineyards*"';
Select * from bv_beverage WHERE CONTAINS (BeverageSearchData,@test)
4

3 回答 3

2

这里有几种可能性。完整的查询而不仅仅是谓词将帮助您获得更好的答案。

可能正在发生的一件事是 SQL 全文搜索在构建索引时会消除单个字符(如 J 中的)。

如果使用CONTAINS,您可能需要更改噪声文件并重新启动 SQL Server 全文搜索服务。

如果使用LIKE,您可以尝试添加一个额外的单字符通配符。玩一下,看看它在没有 2011 的情况下是否可以工作,然后重新添加。

WHERE myColumn like 'j_vineyards%'
WHERE myColumn like 'j%vineyards%'

另外需要注意的是它CONTAINS不支持前导通配符。

于 2012-07-06T23:14:00.663 回答
0

你在找%,不是*

试试这个:

"%2011%" and "%j vineyards%"
于 2012-07-06T22:05:13.817 回答
0

您在创建索引时选择了哪种语言?默认情况下,SQL Server 在创建索引时会关联系统全文停止列表,这可能就是您的情况。

尝试使用 STOPLIST OFF 构建索引,如下所示 -

CREATE FULLTEXT INDEX on [table]([column]) ON [catalog] WITH STOPLIST OFF;

或者,您可以修改停止列表以排除某些单词,例如上面显示的示例中的“j”。

于 2012-09-10T20:45:57.800 回答