在本文中,我们将讨论字符集表和停用词的新添加,这些旨在简化配置索引时使用这些选项的过程。
在最初分析文档文本时,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_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
中找到。