有没有人知道如何使用带有Lucene 3.6的Wordnet扩展查询?

我在org.apache.lucene.analysis.synonym中找到了WordnetSynonymParser类,但是在API和谷歌中都没有使用它的例子。 有人有经验吗?

谢谢!

编辑 :我知道曾经有类SynExpand ,但是版本3.6它消失了……

我试试:

try { FileReader rulesReader = new FileReader("wn/wn_s.pl"); SynonymMap.Builder parser = null; parser = new WordnetSynonymParser(true, true, analyzer); ((WordnetSynonymParser)parser).add(rulesReader); synonymMap = parser.build(); } catch (Exception e) { e.printStackTrace(); System.exit(1); } 

但是我收到以下错误:

 java.text.ParseException: Invalid synonym rule at line 109 at org.apache.lucene.analysis.synonym.WordnetSynonymParser.add(WordnetSynonymParser.java:75) at pirServer.QueryClassifier.(QueryClassifier.java:77) at pirServer.PIRServer.main(PIRServer.java:32) Caused by: java.lang.IllegalArgumentException: term: course of action analyzed to a token with posinc != 1 at org.apache.lucene.analysis.synonym.SynonymMap$Builder.analyze(SynonymMap.java:131) at org.apache.lucene.analysis.synonym.WordnetSynonymParser.parseSynonym(WordnetSynonymParser.java:92) at org.apache.lucene.analysis.synonym.WordnetSynonymParser.add(WordnetSynonymParser.java:67) ... 2 more 

我正在研究类似的事情,只是阅读文档 – 所以SynonymFilter doc的相关警告非常新鲜:

“”此令牌流无法正确处理位置增量!= 1,即您应该在过滤掉停用词之前放置此filter“”

http://lucene.apache.org/core/3_6_0/api/all/org/apache/lucene/analysis/synonym/SynonymFilter.html

您传递的分析器(您在post中未描述)到WordNetSynonymParser可能会删除停用词(大多数情况都是如此),从而导致:

java.lang.IllegalArgumentException:term:使用posinc!= 1分析给令牌的行为过程

Edi Bice的回答帮助我解决了这个问题。 对于其他可能正在寻找的人,使用lucene 4.0,使用空字符集初始化解析器

 WordnetSynonymParser parse = new WordnetSynonymParser(true, true, new StandardAnalyzer(CharArraySet.EMPTY_SET));