【发布时间】:2018-01-19 03:46:44
【问题描述】:
我正在实现法语文本的 Lucene 搜索。无论用户是否输入了重音符号,搜索都必须有效,并且它还必须支持词干提取。我目前在 Lucene 3 中使用基于 Snowball 的法语词干分析器。
在索引方面,我在分析器中添加了一个ASCIIFoldingFilter,它在词干分析器之后运行。
但是,在搜索方面,该操作是不可逆的:词干分析器仅在输入内容包含重音符号时才起作用。例如,它从université 的末尾提取ité,但在用户搜索输入universite 时,词干分析器在查询分析期间返回universit。当然,由于索引包含术语univers,因此搜索universit 不会返回任何结果。
一个解决方案似乎是在分析器中更改词干提取和折叠的顺序:不是先提取词干再折叠,而是先进行折叠再提取词干。这有效地使操作可逆,但也大大阻碍了词干分析器,因为许多单词不再符合词干提取规则。
或者,可以修改词干分析器以对折叠输入进行操作,即忽略重音符号,但这会导致词干过度提取吗?
有没有办法在不改变词干算法行为的情况下有效地进行折叠搜索?
【问题讨论】:
标签: lucene