我有一个关于 lucene Stemmer 的问题。我想知道 lucene 是否同时保留词干和非词干词,或者只是用非词干词替换词干词?
例如,如果一条记录具有以下内容:“每个人都爱猫”,它是否会被索引为“每个人都爱猫爱猫”或“每个人都爱猫”
它对查询和记录有相同的策略吗?
通常,仅保留 Stemmed 版本。也就是说,在您的示例中,最终结果将是“每个人都喜欢猫”而不是“每个人都喜欢猫猫”或类似的组合。
您应该在索引和查询时使用相同的词干分析器。可能有一些词干过滤器,例如SynonymFilter
,允许您保留原始内容,但这样做并运行未提取的查询往往会导致 PhraseQueries 无法正常工作(请参阅 SynonymFilter 文档中关于此主题的注释)。我不相信最常见的词干过滤器(即PorterStemFilter)提供该功能。
如果您出于某种原因需要能够搜索无词干数据,我建议您为此目的存储一个完全无词干的第二个字段。