我正在实施Lucene搜索法语文本。无论用户是否输入了重音,搜索都必须有效,并且还必须支持词干。我目前正在Lucene 3使用基于Snowball的法国词干器。
在索引方面,我在我的分析器中添加了一个ASCIIFoldingFilter
,该分析器在词干分析器之后运行。
但是,在搜索方面,操作是不可逆的:只有输入内容包含重音时,词干分析器才有效。例如,它源自ité
末尾的université
,但是如果用户搜索输入为universite
,则词干分析器在查询分析期间返回universit
。当然,由于索引包含术语univers
,因此搜索universit
不会返回任何结果。
解决方案似乎是改变分析仪中的堵塞和折叠的顺序:而不是堵塞然后折叠,在堵塞之前进行折叠。这有效地使操作可逆,但是由于许多单词不再符合词干规则,因此也显着地阻碍了词干提取。
或者,可以修改词干分析器以对折叠输入进行操作,即忽略重音,但这是否会导致过度干扰?
有没有办法在不改变词干分析算法行为的情况下有效地进行折叠搜索?
答案 0 :(得分:0)
步骤1.)使用详尽的引理同义词映射文件
步骤2.)ASCII(ICU)在lemmatizing之后折叠。
你可以在这里获得详尽的法国风格: http://www.lexiconista.com/datasets/lemmatization/
另外,因为 lemmatizers 不像词干分析器那样具有破坏性,你可以多次应用这个词形变换器,也许你的变形器也包含无重音标准化......只需应用lemmatizer试。