2017-08-10 19 views
1

我正在为法语文本实现Lucene搜索。无论用户是否输入了重音符号,搜索都必须工作,并且还必须支持词干。我目前在Lucene 3中使用了基于雪球的法语词干分析器。Lucene:将ASCII折叠和词法结合起来用于法语

在索引方面,我在分析器中添加了一个ASCIIFoldingFilter,后者运行在词干分析器之后。

但是,在搜索方面,操作是不可逆的:只有在输入内容包含重音符时,词干分析器才起作用。例如,它从université末尾开始的ité,但用户搜索输入universite,在查询分析过程中,词干程序返回universit。当然,由于该索引包含术语univers,因此搜索universit不会返回任何结果。

解决方案似乎是要改变分析器中词干和折叠的顺序:代替词干和折叠,在词干之前进行折叠。这有效地使操作可逆,但也显着地减少了词干分析员,因为许多词语不再符合词干规则。

或者,可以修改词干分析器以对折叠输入进行操作,即忽略重音,但是否会导致词干过度?

有没有办法有效地做折叠搜索而不改变词干算法的行为?

回答

0

步骤1)使用的穷举引理同义词映射文件

步骤2.)ASCII(ICU)lemmatizing后折叠。

您可以在这里得到详尽的法国引理: http://www.lexiconista.com/datasets/lemmatization/

同时,由于lemmatizers没有破坏性像词干您可以将lemmatizer多次,或许你的lemmatizer还含有游离的口音,归一化.. 。再次应用lemmatizer。