代码之家  ›  专栏  ›  技术社区  ›  geocoin

如何处理MS-SQL自由文本搜索中的单字符搜索项?

  •  1
  • geocoin  · 技术社区  · 15 年前

    当前在SQL 2000服务器上运行的FreeText搜索出现问题。

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

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

    处理这些搜索查询的最佳实践是什么?是否可以通过升级到较新版本的SQL Server来解决此问题?

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

    3 回复  |  直到 15 年前
        1
  •  0
  •   Mark Schultheiss    15 年前

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

    WHERE myColumn like 'Texas_A_&_M'
    

    WHERE myColumn like 'Texas%A_&_M' 
    
        2
  •  0
  •   z-boss    15 年前

    您可以检查SQL Server 2005中的改进是否可以解决您的问题: SQL Server 2005 Full-Text Search: Internals and Enhancements 特别是关于噪音词 New Features for the Developer .

        3
  •  0
  •   KM.    15 年前

    如果你在搜索公司名称而不是长段文字,为什么不直接用like?

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