我正在尝试使用 Solr 实现形态搜索。
下面是形态搜索的快速介绍:这意味着搜索算法在创建搜索索引和搜索所请求的短语时会考虑单词的所有语法形式。
例如,在索引单词 child 时,系统会将 child 和 children 同时添加到索引中。类似的规则也适用于动词:对于带来,系统添加带来,带来等。因此,如果用户搜索短语“儿童带来”,系统将显示所有包含孩子,孩子,带来,带来,带来等的结果。
这是我的两个选项:
1) Lemmatize 每个标记并在索引时使用它,并在搜索时对查询字符串执行相同操作。我不想使用这种方法,因为当我开始支持形态搜索时,这会使我的索引不一致,因为以前的文档将缺少引理标记。我也不想重新索引。
2)仅在查询时,找到引理的所有变体(例如:“brought”的引理是“bring”)并通过我的令牌过滤器将这些作为附加令牌生成。这将服务于形态搜索,而无需索引/重新索引任何内容。
问题:
是否有任何好的 Java 库可以为我提供引理的变体/变形(或词根。例如:“brought”的引理是“bring”)?