在本文中,我们讨论了字符集表和停用词的新添加,这些添加旨在简化在配置索引时使用这些选项的过程。
在最初分析文档文本时,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 机器上的 /share/stopwords 中找到它们,在 Linux 机器上的 /usr/local/share/manticore/stopwords 中找到它们。所有当前提供默认停用词的语言列表可以在 languages_list.txt 中找到。