在本文中,我们将讨论字符集表和停用词的新添加内容,这些内容旨在简化在配置索引时使用这些选项的过程。
当最初分析文档文本时,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.txt , non_cjk.txt
为了能够同时处理 CJK 和非 CJK 语言,您应在配置文件中设置选项,如下所示:
charset_table = non_cjk
...
ngram_len = 1
ngram_chars = cjk
如果您不需要 CJK 语言的支持,只需省略 ngram_len 和 ngram_chars 选项即可。
如果您仍然需要为某些语言启用特定规则,可以手动创建适当的字符表,并将它们放入配置文件中,而不是使用默认的字符表。
除了上述选项外,您还可以使用 stopwords 选项来排除一些最常用的单词,这些单词通常与搜索查询的相关性不大,从而从进一步处理和索引中排除。例如,对于英语,这些可能包括 a、the、this、that 等。要启用此选项,请创建您的停用词文件,并在配置文件中设置指向它的路径:
stopwords = /path/to/your/stopwords/file.txt
停用词文件的格式是纯文本,包含您希望被视为停用词的所有单词列表,每行一个单词。要创建停用词文件,要么需要手动构建它,要么可以使用 indexer 工具,该工具可以提供索引中最高频率单词的列表。
或者,正如在 charset_table 和 ngram_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 中找到。