【问题标题】:How to handle single character search terms in MS-SQL FreeText searching?如何处理 MS-SQL FreeText 搜索中的单字符搜索词?
【发布时间】:2010-02-23 17:10:55
【问题描述】:

我在使用当前在 SQL 2000 服务器上运行的 FreeText 搜索时遇到问题。

在包含公司名称的大约 130 万行的表中,我尝试使用 FreeText 查询。但是,由于 SQL Server 在构建其索引时会去除特殊字符和单个字符,因此我们的代码在提交查询时也会这样做。

例如,像“Texas A & M”这样的搜索最终只会查询“Texas”,而这会返回大量不相关的记录。

处理这类搜索查询的最佳做法是什么?升级到较新版本的 SQL Server 是否可以解决此问题?

此时,像 Lucene 这样的第三方索引引擎不是一个选择,即使它可以解决问题,我也不确定。

【问题讨论】:

    标签: sql-server tsql sql-server-2000 freetext


    【解决方案1】:

    您可以尝试使用单个字符通配符“_”,类似于:

    WHERE myColumn like 'Texas_A_&_M'
    

    WHERE myColumn like 'Texas%A_&_M' 
    

    【讨论】:

      【解决方案2】:

      您可以检查 SQL Server 2005 中的改进是否可以解决您的问题: SQL Server 2005 Full-Text Search: Internals and Enhancements,尤其是New Features for the Developer 中的噪声词。

      【讨论】:

        【解决方案3】:

        如果您搜索的是公司名称而不是长段文字,为什么不直接使用 LIKE?

        ...
        WHERE
            CompanyName LIKE '%Texas A%&%M%'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-06-06
          • 1970-01-01
          • 1970-01-01
          • 2012-07-02
          • 2011-09-08
          • 1970-01-01
          • 2019-11-03
          相关资源
          最近更新 更多