首页 > 解决方案 > 从 fts 关键字中删除双引号?

问题描述

我需要用全文索引索引 JSON 值。

在甲骨文中:

CREATE INDEX index_name ON tab_name (json_col_name)
  INDEXTYPE IS CTXSYS.CONTEXT
  PARAMETERS ('section group CTXSYS.JSON_SECTION_GROUP SYNC (ON COMMIT)');

在 SQL Server 中:

CREATE FULLTEXT INDEX ON tab_name (json_col_name)
        KEY INDEX primary_key_name
        ON ft_cat_name
        [other options...];

两个索引都创建成功。但是当我对这些索引进行一些查询时,我在 SQL 中遇到了一些麻烦。当我试图找到原因时,我发现这是由断词引起的。

Word-breaker 将 json 文本中所有 FIELDS 和 VALUES 的不必要字符(双引号、冒号)保留为 INDEX KEYWORDS。

SELECT * FROM sys.dm_fts_index_keywords  (DB_ID('db_name'), OBJECT_ID('tab_name'))

有没有人遇到过这个问题?以及如何解决?

我想知道在 SQL 中填充索引时如何配置断词器以从关键字中删除不必要的字符。

标签: sql-serverfull-text-search

解决方案


我尝试使用中性语言 (LCID = 0) 对这些列进行索引,并从关键字中删除 JSON 字符串中所有不必要的符号。

CREATE FULLTEXT INDEX ON tab_name (json_col_name language 0)
    KEY INDEX primary_key_name
    ON ft_cat_name
    [other options...];

推荐阅读