2011-05-11 72 views
0

我希望你能帮助我解决这个问题。 我打算做的事情: 给定一个正确的文本,我想要计算每个干扰标记ngrams的频率(没有停用词)(换句话说,停用词已被删除)。如何使用lucene的shingleanalyzerwrapper + standardanalyzer + indexreader?

情况是这样的: 我索引一些文本使用ShingleAnalyzerWrapper + StandardAnalyzer和的IndexWriter当我添加一个文件的IndexWriter(是这样的:indexwriter.addDocument(DOC,分析仪);其中,分析仪再次,ShingleAnalyzerWrapper + StandardAnalyzer )。

但问题是: 当我得到术语频率和术语时,停用词似乎被下划线代替。

这是输入:
String text =“我想要我想链接”;
String text2 =“super by by hard easy”;

这是输出:
术语:| FREQ:6
术语:
_ |频率:2
术语:_硬|频率:1
术语:_ I |频率:2
长期:_链接|频率:1
项:易|频率:1
项:硬|频率:1
项:硬易|频率:1
项:我|频率:2
项:我want | freq:2
t ERM:链接|频率:1
项:超|频率:1
项:超_ |频率:1
项:想|频率:2
项:想_ |频率:2

如果什么还不清楚,请咨询我,所以我努力让自己更清楚

感谢您的帮助

回答

0

请参阅http://www.lucidimagination.com/search/document/e5681676403a007b/can_i_omit_shinglefilter_s_filler_tokens了一些解决方案。

在这种情况下,您可能希望禁用停止过滤器上的位置增量,因为您不想在停用词所在的位置引入“孔”,您希望假装它们从不存在。

+0

这正是我想要的,非常感谢你。 – ncode 2011-05-13 13:25:49

+0

该链接提供了一个未找到的页面;这似乎是相同的讨论,虽然:http://www.gossamer-threads.com/lists/lucene/java-user/123704?do=post_view_threaded#123704 – junkdog 2013-03-25 12:25:20