⚠️ 此页面为自动翻译,翻译可能不完美。

Default charset tables and stopwords files

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

当最初分析文档文本时,Manticore Search 需要知道文本中的哪些符号对后续处理(将全文拆分为单独的单词、处理词形变化等)是有意义的,哪些是没有意义的。为了定义有效的文本字符,使用 charset_table 选项。通过此选项,您可以指定想要使用的符号集。

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

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

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

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

  • ASCII 原生数字折叠

  • 大小写折叠

  • 变音符号折叠

  • 汉字部首折叠

  • 平假名折叠

  • 片假名折叠

  • 字母形式折叠

  • 简化汉字折叠

  • 下标折叠

  • 上标折叠

  • 宽度折叠

您可以在以下链接查看用于默认字符集的源文件: cjk.txtnon_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