【问题标题】:Different Results on Full Text Search for same search on different cases on Spanish Language全文搜索的不同结果在西班牙语的不同案例中进行相同的搜索
【发布时间】:2018-04-11 23:20:17
【问题描述】:

我在 SQL Server 2016 上使用全文CONTAINS 来搜索表。但是,如果我在查询中更改大小写,我会得到不同的结果。例如:

这样做(使用大写L):

select *  FROM CONTAINSTABLE(OITM, (ItemCode),  '"L-1326*"' )

返回这个:

  • L-1326 416
  • L-1326-COVER-SSS 208
  • L-1326-SSS 208

但是这样做(使用小写'l')::

select *  FROM CONTAINSTABLE(OITM, (ItemCode),  '"l-1326*"' )

返回这个:

  • L-1326-COVER-SSS 208
  • L-1326-SSS 208

我的全文目录定义如下:

CREATE FULLTEXT CATALOG SBOWeex
WITH ACCENT_SENSITIVITY = OFF
GO

我的全文索引是这样定义的:

CREATE FULLTEXT INDEX ON [dbo].[OITM] (
ItemCode Language 3082 
,ItemName Language 3082 
,CodeBars Language 3082
,SuppCatNum Language 3082 
) 
KEY INDEX OITM_PRIMARY
ON SBOWeex
WITH CHANGE_TRACKING AUTO
GO
ALTER FULLTEXT INDEX ON [OITM] SET STOPLIST = OFF

我不应该期望两个查询的结果相同吗?


编辑:我正在使用 Latin1-General、不区分大小写、区分重音的排序规则。但是我的全文目录是用重音敏感关闭定义的。此外,这似乎只发生在 "L-"l- 组合中,任何其他字母与 "-" 组合似乎在西班牙语和英语解析中具有相同的行为.

【问题讨论】:

    标签: sql sql-server full-text-search full-text-indexing


    【解决方案1】:

    这取决于您正在运行的排序规则。听起来您正在运行区分大小写的排序规则。对于西班牙语,您还需要确定您是在运行区分重音还是不区分重音排序规则。

    要查找数据库的排序规则,请按照以下步骤操作: https://docs.microsoft.com/en-us/sql/relational-databases/collations/view-collation-information

    那么,一旦你知道了,看看罗伯特谢尔顿的文章Questions About SQL Server Collations You Were Too Shy to Ask

    【讨论】:

    • 我正在使用 Latin1-General、不区分大小写、区分重音的排序规则。但是我的全文目录是用重音敏感关闭定义的。所以我认为这应该不是问题。我会把这个添加到问题中。但感谢您的意见。
    • 该死!希望这就是它的全部。不过祝你好运。
    猜你喜欢
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2016-10-18
    • 2010-12-17
    • 1970-01-01
    相关资源
    最近更新 更多