Java Lucene:基于字典术语索引文档/实现自定义分析器

Java Lucene:基于字典术语索引文档/实现自定义分析器,java,lucene,mediawiki,text-mining,analyzer,Java,Lucene,Mediawiki,Text Mining,Analyzer,我有大量的大学网页(文档),我的目标是使用维基百科的术语词典在给定的文档中查找这些术语。最后,我要计算每个维基百科术语的文档频率。(不要求每个文件的术语频率) 维基百科(多词)词典条目如下所示- <t id="34780065">Years of the 20th century in Mauritania</t> <t id="34780066">1960 International Gold Cup</t> <t id="34780067

我有大量的大学网页(文档),我的目标是使用维基百科的术语词典在给定的文档中查找这些术语。最后,我要计算每个维基百科术语的文档频率。(不要求每个文件的术语频率)

维基百科(多词)词典条目如下所示-

<t id="34780065">Years of the 20th century in Mauritania</t>
<t id="34780066">1960 International Gold Cup</t>
<t id="34780067">Roman Lob songs</t>
毛里塔尼亚20世纪的年代 1960年国际金杯 罗马高球歌曲 我正试图用Lucene来实现这一点

方法1:使用ShingleAnalyzer为文档中的n-gram标记编制索引。n-grams,因为字典包含多个单词术语。然后循环遍历每个字典术语,从索引中查找它们的文档频率

方法2:使用建议的技术,实现一个查找维基百科词典以进行索引的分析器。然后使用此分析器索引文档中的令牌流

问题:两种方法中哪一种更有效?
如果我使用第二种方法,我如何实现这个自定义分析器。我还没有找到任何好的资源来帮助解释这样的实现。

我认为您应该使用方法1,因为方法2看起来您必须在维基百科词典中查找每个单词,然后是每个2个单词,然后是每个3个单词。。。(或按相反顺序)每n克。方法1中的N-gram索引,然后扔掉不在维基百科词典中的N-gram,我认为当您查看每个N-gram一次时,您会更快到达那里(O(N)*如果我正确理解问题,维基百科词典查找性能)