SQL函数CONTAINS()不返回预期的结果?

时间:2012-03-21 07:16:03

标签: sql sql-server-2000

我有一个'资产'表,其中包含'AssetDescription'列。它的每一行都有一些单词/句子,用逗号分隔。

  

第1行: - 鲜花,全彩,女性,趋势

     第2行: - 宝宝闻鲜花,心脏

现在,如果我提交搜索查询,如: -

select * from Asset where contains(AssetDescription,'flower')

它什么都不返回。

我还有一个表'SearchData',其列为'SearchCol',具有与'Asset'表中提到的类似的行。

现在,如果放一个搜索查询,如: -

select * from SearchData where contains(SearchCol,'flower')

它返回两行。

问题: -

  1. 为什么第一个查询不返回任何结果,但第二个查询没有返回任何结果。
  2. 如果“全文搜索”与第一个问题有关,那么该怎么办呢。因为我正在使用SQL Server 2000。
  3. 清除对我的问题的评论疑问: -

    1. 表'SearchData'的行数超过100,000,表'资产'也是如此。

    2. 这两个表格不相同。但是它们各自的列包含一些行,这些行包含由逗号分隔的一组单词。 (所以这两个栏目中的花朵,花朵等都很多。)

    3. 两个表(资产和搜索数据)的索引的屏幕截图: - enter image description here

3 个答案:

答案 0 :(得分:2)

如果您阅读CONTAINS上的文章,您会在搜索时看到

  • 含有(AssetDescription,'花&#39)

'花'被视为简单术语

  

匹配确切的字词或短语

然而

  • 包含(AssetDescription,' flower *')

'花'被视为前缀术语

  

指定以指定的开头的单词或短语的匹配   文本

并将匹配鲜花'在你的数据中。

那么,您确定两个表中的数据是相同的,还是资产'包含鲜花'和' SearchData'包含'花'?

答案 1 :(得分:2)

它可能与您的全文索引配置有关。 你能在索引和目录上发布一些信息吗?

答案 2 :(得分:0)

GOT THE SOLUTION。

感谢所有人,特别是DIEGO的支持。

允许全文搜索(FTS)正常工作: -

  1. 为所需的表启用FTS。
  2. 为该表下的所需列启用FTS。
  3. 打开同一个表的属性,并检查是否启用了“全文更改跟踪”和“全文更新索引”属性。如果没有,请启用它们。
  4. DONE。 :)