【问题标题】:How to index small words (3 letters) with SQL Full-text search?如何使用 SQL 全文搜索索引小单词(3 个字母)?
【发布时间】:2011-03-02 20:44:36
【问题描述】:

我有一个Incident 表,其中一行在Description 列中具有值'out of office'。

但是以下查询不返回该行。

SELECT * FROM Incident
WHERE CONTAINS( (Incident.Description), '"out*"' )

“out”这个词不在噪声文件中(我完全清除了噪声文件并重建了索引)。

是不是因为SQL全文搜索不索引小词?有这样的设置吗?有没有可以运行的命令来准确查看用于构建索引的噪声文件?

注意:我使用的是 SQL 2005。

【问题讨论】:

    标签: sql-server full-text-search


    【解决方案1】:

    如果您还没有,请在清除噪声文件后尝试重建索引,如链接到helpful blog post 的this answer 中所述。

    【讨论】:

    • 我重建了索引,但没有改变结果。
    【解决方案2】:

    当您处理噪音文件时,在您为您的实例重新启动适当的 SQL Server 全文搜索服务之前,不会考虑它们。

    我已经通过以下方式测试了您的场景,并且可以正常工作...


    1. 包含带有“out”值的噪声文件
    2. 在其中插入值如 '% out %' 的记录
    3. 执行了您的 select 语句,发现它们没有返回
    4. 修改word文件,去掉'out'条目
    5. 为我的实例重新启动 SQL Server 全文搜索服务
    6. 使用“ALTER FULLTEXT CATALOG [NameOfMyCatalog] REBUILD”重建全文目录
    7. 稍等(给全文服务一个机会来完成这项工作)
    8. 执行了您的 select 语句并看到它们现在已返回

    希望这会有所帮助...

    【讨论】:

    • 非常感谢!重新启动全文服务,然后重建索引有效。
    猜你喜欢
    • 2012-10-14
    • 2013-05-29
    • 2010-12-07
    • 2011-06-11
    • 2015-08-20
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多