我想弄清楚lucene的分析仪是如何工作的? 我的问题是lucene如何处理同义词?情况如下: 我们有单个单词和多个单词
单身:foo = bar 多个词:foo bar = foobar
单个单词:
对于多个单词:
我的第二个问题是:Lucene使用标记流并将它们提供给过滤器,如小写过滤器。我的问题是lucene如何找到多个单词?比如怎么发现“foo bar”是一个多个词在一起?
感谢
答案 0 :(得分:3)
SynonymFilter可以选择保留原始单词,并通过设置keepOrig
= true(请参阅SynonymMap.Builder.add())将同义词添加到令牌流中。此行为可能会导致PhraseQueries等问题,请参阅SynonymFilter
文档上的第一个注意。
如果您使用相同的Analyzer
进行查询和索引,那么写入索引的查询和文档当然会以相同的方式处理。将SynonymFilter
设置为true的keepOrig
是在查询和索引之间经常应用的少数Analyzers
之一,但这完全取决于您的实现。
就其实施方式而言,source code可供您使用。