none
Full-text搜索把“一二三”当成“123” RRS feed

  • 问题

  • (我的中文不是太好,请各位见谅)

    我有一个table,其中一个column建立了full-text index。但当我搜索的时候,SQL Server 会把中文字的数字当成是罗马数字。比如说下面的两个queries出来的结果是一样的:

    SELECT COUNT(*) FROM survey WHERE CONTAINS (description, '一二')

    > 5121

    SELECT COUNT(*) FROM survey WHERE CONTAINS (description, '12')

    > 5121

    请问有没有办法把“一二三”和“123”分开? 谢谢!

    2014年5月7日 20:23

答案

  • @Jiwen Wang:谢谢回复,请问可否提供具体例子如何解决我的问题?我看了你说的两个链接但似乎没有找到怎样解决的方法。谢谢!

    我想你需要维护下同义词词典,或者限定language_term

    同义词词典路径:http://technet.microsoft.com/zh-cn/library/ms142491.aspx#location

      同义词词典:SQL_Server_install_path/Microsoft SQL Server/MSSQL.1/MSSQL/FTDATA/ tschs.xml

      干扰词词典:SQL_Server_install_path/Microsoft SQL Server/MSSQL.1/MSSQL/FTDATA/ noiseChs.txt

    Chs为简体中文



    2014年5月9日 6:22

全部回复

  • (我的中文不是太好,请各位见谅)

    我有一个table,其中一个column建立了full-text index。但当我搜索的时候,SQL Server 会把中文字的数字当成是罗马数字。比如说下面的两个queries出来的结果是一样的:

    SELECT COUNT(*) FROM survey WHERE CONTAINS (description, '一二')

    > 5121

    SELECT COUNT(*) FROM survey WHERE CONTAINS (description, '12')

    > 5121

    请问有没有办法把“一二三”和“123”分开? 谢谢!

    你好,这个现象属于同义词范畴,参考 http://msdn.microsoft.com/zh-cn/library/ms142491.aspx

    解决方法参考 http://msdn.microsoft.com/zh-cn/library/ms187787.aspx

    2014年5月8日 7:28
  • @Jiwen Wang:谢谢回复,请问可否提供具体例子如何解决我的问题?我看了你说的两个链接但似乎没有找到怎样解决的方法。谢谢!


    2014年5月9日 2:27
  • @Jiwen Wang:谢谢回复,请问可否提供具体例子如何解决我的问题?我看了你说的两个链接但似乎没有找到怎样解决的方法。谢谢!

    我想你需要维护下同义词词典,或者限定language_term

    同义词词典路径:http://technet.microsoft.com/zh-cn/library/ms142491.aspx#location

      同义词词典:SQL_Server_install_path/Microsoft SQL Server/MSSQL.1/MSSQL/FTDATA/ tschs.xml

      干扰词词典:SQL_Server_install_path/Microsoft SQL Server/MSSQL.1/MSSQL/FTDATA/ noiseChs.txt

    Chs为简体中文



    2014年5月9日 6:22