【问题标题】:Having trouble using 'AND' in CONTAINSTABLE SQL SERVER FULL TEXT SEARCH在 CONTAINSTABLE SQL SERVER FULL TEXT SEARCH 中使用“AND”时遇到问题
【发布时间】:2011-02-13 00:03:10
【问题描述】:

我使用 FULL-TEXT 已有一段时间了,但有时我似乎无法获得最相关的结果。

如果我有一个类似 An Overview of Pain Medicine 5/12/2006 的字段并且用户输入 An Overview 5/12/2006

所以我们创建一个类似的搜索:

"An" AND "Overview" AND "5/12/2006" - 0 个结果(差)

"Overview" AND "5/12/2006" - 1 个结果(好)

我的查询的 CONTAINSTABLE 部分:

FROM         ce_Activity A
INNER JOIN
    CONTAINSTABLE(View_Activities,(Searchable), @Search) AS KeyTbl ON A.ActivityID = KeyTbl.[KEY]

“可搜索”是一个包含活动标题的字段,并且在一个字段中包含开始日期(转换为字符串),因此它对搜索都很友好。

为什么会这样?

[更新]

好的,我刚刚测试了 NOISE 词理论。我用了"Pain" AND "Overview" AND "5/12/2006",效果很好。

但是如果我添加“of”它会失败。 “Of”和“An”必须是干扰词。

现在的问题是,如果存在干扰词,我该如何让它只是忽略单词,而不是从结果中删除它?

有什么建议吗?

【问题讨论】:

标签: sql-server sql-server-2008 full-text-search full-text-indexing


【解决方案1】:

也许your current word breaker 忽略了“an”作为噪音。

【讨论】:

  • 如果是这种情况,它仍然会加载记录,因为“概述”和“2006 年 5 月 12 日”有效。
  • 好的,我刚刚测试了这个理论。我使用了“疼痛”和“概述”和“2006 年 5 月 12 日”,效果很好。但是,如果我添加“of”它会失败。 “Of”和“An”必须是干扰词。现在的问题是,如果存在噪声词,我该如何让它只是忽略单词,而不是从结果中删除它?有什么建议吗?
  • 在 SQL 2008 中,噪音词是通过停用词和停止列表来控制的,参见technet.microsoft.com/en-us/library/ms142551.aspx
  • 您可以选择打开transform noise words 选项,请参阅technet.microsoft.com/en-us/library/ms187914.aspx,如果您的 CONTAINS 依赖于停用词,则会引发错误。或者您可以在客户端解析表达式,与sys.fulltext_stopwords 列表进行比较并修改表达式以删除已知的停用词。恐怕没有免费的午餐。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
相关资源
最近更新 更多