【问题标题】:Matching words in close proximity相近的词匹配
【发布时间】:2016-02-07 09:13:47
【问题描述】:

我在 SQL 2012 中有一个表,我正在对它执行全文搜索。

作为较大字符串的一部分,其中一条记录包含文本“试用您的系统”。

问题是,如果我在目标字符串中搜索两个靠得太近的单词,我找不到匹配项。

select * from mytable where contains(*,'trying') -- match
select * from mytable where contains(*,'trying and out') -- no match
select * from mytable where contains(*,'trying and your') -- no match
select * from mytable where contains(*,'trying and system') -- match

我知道我可以通过将搜索模式用双引号括起来来搜索确切的字符串,但这并不是我真正想要的。

有什么建议可以让以上所有搜索词都匹配吗?

谢谢。

【问题讨论】:

    标签: sql-server full-text-search


    【解决方案1】:

    这听起来像是stopwords 的问题(“the”、“your”等常用词通常会从全文索引中过滤掉,因此您无法搜索它们)。

    为防止这种情况发生,您可以修改全文索引,使其不使用停止列表(换句话说,每个单词都将被编入索引,因此可搜索)。

    ALTER FULLTEXT INDEX ON MyTable SET STOPLIST = OFF
    

    之后一定要重建全文目录。

    但只有在您确实需要搜索常用词的能力时才这样做。通常这不是必需的。此外,这样做可能会减慢您的全文搜索速度。

    【讨论】:

    猜你喜欢
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多