【发布时间】:2013-06-22 01:49:07
【问题描述】:
我对 lucene 的 tokenfilters 顺序有疑问。例如,如果我想有以下过滤器,lucene 使用这些过滤器的顺序是什么?
1- 小写过滤器 猫 => 猫
2- 修剪过滤器 猫! => 猫
3- 停止过滤器 一只猫 => 猫
4- 长度过滤器
5- 词干过滤器
6- 同义词过滤器
我找不到任何解释此序列的文档。
【问题讨论】:
我对 lucene 的 tokenfilters 顺序有疑问。例如,如果我想有以下过滤器,lucene 使用这些过滤器的顺序是什么?
1- 小写过滤器 猫 => 猫
2- 修剪过滤器 猫! => 猫
3- 停止过滤器 一只猫 => 猫
4- 长度过滤器
5- 词干过滤器
6- 同义词过滤器
我找不到任何解释此序列的文档。
【问题讨论】:
过滤器的顺序取决于您的需要。不过,您的订购似乎是合理的。
请注意,我不相信 TrimFilter 会按照您的说明行事。 TrimFilter 从令牌中修剪空格,而不是标点符号。大多数 Tokenizers 使这个过滤器变得不必要。
TrimFilter 和 LowerCaseFilter 通常会在早期使用,因此对单词内容进行操作的过滤器不必处理大小写或空格。
StopFilter 和 LengthFilter 的操作类似,我通常会在词干提取之前使用它们。 StopFilter 删除的单词通常是非常原子的,因此在 Stemmer 之前应用它是有意义的。在词干分析器之后应用这些过滤器可能会导致丢失您不希望的有意义的词干。如果您确实希望您的 StopFilter 对词干词进行操作,那么它当然需要出现在词干词之后。
SynonymFilter 是否出现在 Stemmer 之后肯定取决于您的需求。 Stemmer 之后的 SynonymFilter 通常会更有用,但需要您使用它们的词干形式定义同义词
【讨论】: