第六章 使用 SQL Search - 词干提取和分解
第六章 使用 SQL Search - 词干提取和分解
词干提取和分解
基本索引、语义索引、分析索引都可以支持词干提取和分解。词干提取和分解是基于单词的操作,而不是基于 NLP
实体的操作。定义 SQL
搜索索引时,必须启用词干分析和分解。要为词干感知搜索启用索引,请指定 INDEXOPTION=1
;要同时启用词干感知搜索和分解感知搜索,请指定 INDEXOPTION=2
。
如果 SQL
搜索索引定义为支持词干提取 (1
) 或词干提取和分解 (2
),则可以通过设置 search_option 值在 search_index()
查询中使用这些功能。
Stemming
词干识别每个单词的词干形式。词干形式统一了同一单词的多种语法形式。当在查询时使用 search_option=1
时,SQL
搜索使用单词的词干形式(而不是实际的文本形式)执行搜索和匹配操作。通过使用 search_option=0
,可以使用相同的索引进行常规(非词干)搜索。
如果词干提取处于活动状态,则通过确定搜索词的词干形式并使用该词干形式来匹配文本中的单词来执行搜索和匹配。例如,搜索词“doctors
”与文本中的“doctor
”或“doctors
”匹配。当词干提取处于活动状态时,可以通过用引号将搜索列表中的单个单词括起来,将搜索词与其在文本中完全匹配:搜索词“doctors
”仅与文本中的医生匹配。
Decompounding
分解将复合词分解为其组成词。 SQL
搜索总是将分解与词干结合起来;一旦一个单词被分成其组成部分,每个部分都会自动被词干化。使用分解搜索 (search_option=2
) 时,SQL
搜索会将搜索词的分解词干与索引文本字段中单词的分解词干进行比较。仅当任何组成词的词干与搜索项的所有组成词匹配时,SQL
搜索才会匹配分解词。
例如,搜索词“thunder”
、“storm”
或“storms”
都将与单词“thunderstorms”
匹配。然而,搜索词“thunderstorms”
不会与单词“thunder”
匹配,因为它的另一个组成词(“storm”
)不匹配。
SQL
搜索分解算法使用特定于语言的字典来识别可能的组成词。应通过 %iKnow.Stemming.DecompoundingUtils
类填充此字典。例如,通过在索引之前将其指向文本列。可能还希望免除特定单词的分解。可以使用 %iKnow.Stemming.DecompoundUtils
免除单个单词、字符序列和训练数据单词列表的分解。
IRIS 自然语言处理器不支持的语言
可以使用 SQL Search Basic
索引来索引和搜索没有相应 NLP
语言模型的语言的文本。
由于词干提取不依赖于 NLP
语义索引,因此如果词干分析器可用,还可以对单词的词干形式执行基本索引词搜索。必须指定 INDEXOPTION=1
或 INDEXOPTION=2
才能执行词干搜索。例如,意大利语不是 NLP
支持的语言,但 IRIS
为意大利语提供了 %Text
词干分析器。
以下限制和警告适用于 NLP
不支持的语言的 SQL
搜索:
- 使用此功能需要
IRIS
自然语言处理器许可证。 - 该语言必须使用空格分隔单词。无法搜索不使用单词分隔符的语言。但是,可以搜索日语(不使用单词分隔符),因为
NLP
提供了日语语言模型。 - 撇号不分隔单词。
NLP
识别缩写(例如“can’t”
)和缩写动词形式(例如“there’s”
)并将它们分成两个单词,同时忽略用于其他目的的撇号,例如所有格(“John's”
)。如果没有NLP
支持,SQL
搜索无法将缩写词和缩写词分成单独的单词。可以通过预处理文本、根据需要在撇号之前或之后插入空格来弥补这一点。 -
UserDictionary
无法应用于SQL
搜索索引之前的文本。