1

我们使用全文搜索和Contains在 SQL Server 2008 R2 中的记录之间进行搜索,示例如下:

NEWS(Title): "We", "New", "Our", "Long-Term", "Seem", "Non.Active"

因此,正如您在News表中看到的,标题字段具有值。我们可以搜索除 之外的所有值 "Long-Term" And "Non.Active",实际上我们无法搜索包括 dash("-") 或 dot(".") 在内的单词。我们还检查了这些提示:

SELECT * FROM NEWS WHERE  Contains(Title, 'Non.Active');
SELECT * FROM NEWS WHERE  Contains(Title, 'Non Active');
SELECT * FROM NEWS WHERE  Contains(Title, 'NonActive');
SELECT * FROM NEWS WHERE  Contains(Title, 'Non*');
SELECT * FROM NEWS WHERE  Contains(Title, 'Active');
SELECT * FROM NEWS WHERE  Contains(Title, 'Non');
SELECT * FROM NEWS WHERE  Contains(Title, '*Active');
SELECT * FROM NEWS WHERE  Contains(Title, ' "Non.Active" ');
SELECT * FROM NEWS WHERE  Contains(Title, ' "Non Active" ');
SELECT * FROM NEWS WHERE  Contains(Title, ' "NonActive" ');
SELECT * FROM NEWS WHERE  Contains(Title, ' "Non*" ');
SELECT * FROM NEWS WHERE  Contains(Title, ' "*Active" ');
SELECT * FROM NEWS WHERE  Contains(Title, ' "Active" ');
SELECT * FROM NEWS WHERE  Contains(Title, ' "Non" ');

但是它们都没有返回任何结果。我们还重建了全文索引,但我们没有得到任何结果。

所以问题是:有没有办法搜索单词包括“。” 还是带有全文Contains谓词的“-”?任何建议

更新

我真的很抱歉主要问题是另一个?

你对“非”和“行动”两个词没问题。但我测试它的主要情况是“We.Our”并且钢没有返回任何结果?这太连贯了,我用上面的搜索测试了“Non.Action”并且有效,但“We.Our”没有。所以我尝试了另一条记录,我插入了“我们的”,搜索结果仍然为空。问题是关于“我们的”这个词?“我们的”有什么问题我也在 SQL Server 2012 中检查过,但也没有用。有没有人对此有任何想法?

4

3 回答 3

0

重点是 Block words 和 Noisy words 应该检查,在我的情况下our是一个嘈杂的词,我不知道为什么。但问题解决了

于 2013-10-23T05:07:14.917 回答
0

您可以检查所需数据在全文目录中的存储方式:

SELECT *
FROM sys.dm_fts_index_keywords_by_document(db_id('DBname'), object_id('TableName'))
WHERE document_id = <Unique Id>

“我们的”这个词呢,它似乎是一个停用词。

于 2013-10-07T08:15:04.957 回答
0

在我的情况下,它只是作为

SELECT * FROM NEWS WHERE  Contains(Title,'"Non.*"');

但是我听说2008版本有一点bug。可能更新sql server实例后问题会解决。

于 2013-10-07T07:52:41.340 回答