默认字符集表和停用词文件

在本文中,我们将讨论字符集表和停用词的新添加,这些旨在简化配置索引时使用这些选项的过程。

在最初分析文档文本时,Manticore Search 需要知道文本中的哪些符号对于后续处理(将完整文本拆分为单独的单词、进行形态学处理等)是有意义的,哪些不是。要定义有效的文本字符,使用 charset_table 选项。通过该选项,您可以指定希望使用的符号集。

此外,为了提供更好的文本搜索质量,Manticore Search 执行所谓的字符折叠。例如,在分析您的搜索查询时,大写符号会被映射为小写符号,附加符号(如 âêîô 等)会被映射为它们的基本等效符号,等等。字符集表是定义所有这些转换的机制。

特殊情况是像中文这样的语言,它们的文本是未分段的,无法轻易拆分为单独的单词,因为它们没有明确的单词分隔符。(“CJK”是一个广泛使用的术语,用于指代这些语言,是中文-日文-韩文的缩写。)为了有效地搜索这些语言,应该使用 ngram_chars 选项以及 ngram_len 。它将文本视为一组独立的 N-grams,每个 N-gram 是一个字符序列,其长度等于 ngram_len 值。(目前仅支持 ngram_len = 1。)这些字符需要在 ngram_chars 指令中定义,不能出现在常规的 charset_table 中。

因此,如果您希望搜索支持不同语言,您需要为所有语言定义有效字符集和折叠规则,这可能是一项相当繁重的工作。

我们已经为您完成了这项任务,准备了默认的字符集表,分别包含非CJK和CJK语言。这些表在大多数情况下应该是足够的。它们基于可以在 这里 看到的 ICU 字符折叠数据,并定义了以下折叠:

  • ascii 本地数字折叠

  • 大小写折叠

  • 附加符号折叠

  • 汉字部首折叠

  • 平假名折叠

  • 片假名折叠

  • 字母形式折叠

  • 简化汉字折叠

  • 下标折叠

  • 上标折叠

  • 宽度折叠

在这里您可以看到用于默认字符集的源文件: cjk.txt , non_cjk.txt

要能够处理CJK和非CJK语言,您应该在配置文件中设置如下选项:

charset_table     = non_cjk

...

ngram_len         = 1

ngram_chars     = cjk

如果您不需要支持CJK语言,您可以简单地省略 ngram_lenngram_chars 选项。

如果您仍然需要为某些语言启用特定规则,您可以手动创建相应的字符表,并将其放入您的配置文件中,而不是使用默认的表。

除了上述选项外,您可以使用 stopwords 选项来排除一些最常用的词,这些词通常与搜索查询没有太多相关性,免于进一步处理和索引。例如,对于英语,这些词可能包括 athethisthat 等。要启用此选项,请创建您的停用词文件,并在配置文件中设置其路径:

stopwords         = /path/to/your/stopwords/file.txt

停用词文件的格式是纯文本,包含您希望被视为停用词的所有单词的列表,每行一个单词。要创建停用词文件,您可以手动构建它,或使用 indexer 工具,该工具可以提供索引中最高频词的列表。

另外,就像在 charset_tablengram_chars 选项的情况一样,现在您可以使用我们的默认停用词文件。目前可用 50 种语言的停用词。以下是它们的完整别名列表:

  • af - 非洲荷兰语

  • ar - 阿拉伯语

  • bg - 保加利亚语

  • bn - 孟加拉语

  • ca - 加泰罗尼亚语

  • ckb- 库尔德语

  • cz - 捷克语

  • da - 丹麦语

  • de - 德语

  • el - 希腊语

  • en - 英语

  • eo - 世界语

  • es - 西班牙语

  • et - 爱沙尼亚语

  • eu - 巴斯克语

  • fa - 波斯语

  • fi - 芬兰语

  • fr - 法语

  • ga - 爱尔兰语

  • gl - 加利西亚语

  • hi - 印地语

  • he - 希伯来语

  • hr - 克罗地亚语

  • hu - 匈牙利语

  • hy - 亚美尼亚语

  • id - 印度尼西亚语

  • it - 意大利语

  • ja - 日语

  • ko - 韩语

  • la - 拉丁语

  • lt - 立陶宛语

  • lv - 拉脱维亚语

  • mr - 马拉地语

  • nl - 荷兰语

  • no - 挪威语

  • pl - 波兰语

  • pt - 葡萄牙语

  • ro - 罗马尼亚语

  • ru - 俄语

  • sk - 斯洛伐克语

  • sl - 斯洛文尼亚语

  • so - 索马里语

  • st - 南索托语

  • sv - 瑞典语

  • sw - 斯瓦希里语

  • th - 泰语

  • tr - 土耳其语

  • yo - 约鲁巴语

  • zh - 中文

  • zu - 祖鲁语

例如,要使用意大利语的停用词,只需在配置文件中加入以下行:

stopwords         = it

如果您需要为多个语言使用停用词,您应该列出它们的别名,用逗号分隔:

stopwords         = en,it,ru

所有默认的停用词文件都存储在它们各自的文件夹中。在Windows机器上,您可以在Manticore安装文件夹内的/share/stopwords中找到它们,在Linux机器上位于/usr/local/share/manticore/stopwords。当前提供默认停用词的所有语言列表也可以在该目录下的languages_list.txt中找到。

安装Manticore Search

安装Manticore Search