0

我正在尝试使用 Solr 实现形态搜索。

下面是形态搜索的快速介绍:这意味着搜索算法在创建搜索索引和搜索所请求的短语时会考虑单词的所有语法形式。

例如,在索引单词 child 时,系统会将 child 和 children 同时添加到索引中。类似的规则也适用于动词:对于带来,系统添加带来,带来等。因此,如果用户搜索短语“儿童带来”,系统将显示所有包含孩子,孩子,带来,带来,带来等的结果。

这是我的两个选项:
1) Lemmatize 每个标记并在索引时使用它,并在搜索时对查询字符串执行相同操作。我不想使用这种方法,因为当我开始支持形态搜索时,这会使我的索引不一致,因为以前的文档将缺少引理标记。我也不想重新索引。
2)仅在查询时,找到引理的所有变体(例如:“brought”的引理是“bring”)并通过我的令牌过滤器将这些作为附加令牌生成。这将服务于形态搜索,而无需索引/重新索引任何内容。

问题:

是否有任何好的 Java 库可以为我提供引理的变体/变形(或词根。例如:“brought”的引理是“bring”)?

4

1 回答 1

1

接近您要求的东西是使用 solr 同义词词典和同义词过滤器。在那里您可以添加像孩子这样的基本词,并添加像孩子、孩子、婴儿这样的变体。每次编辑字典后都需要重新加载集合。如果搜索“孩子”,则将对孩子的每个变体执行搜索。

于 2018-03-16T07:05:13.187 回答