lucene-使用sandbox的wordnet完成同义词索引
wordnet是一个同义词系统。
1、从wordnet网站下载解压prolog16.tar.gz文件
2、获得sandbox工具箱wordnet包的二进制文件
3、建立同义词索引
java org.apache.lucene.wordnet.Syns2Index prologwn/wn_s.plwordnetindex
4、将WordNet中的同义词连接到分析器中
public class WordNetSynonymEngine implements SynonymEngine{
RAMDirectory directory;
IndexSearcher searcher;
public WordNetSynonymEngine(File index) throws IOException{
directory=newRAMDirectory(FSDirectory.getDirectory(index,false));
searcher=new IndexSearcher(directory);
}
public String[] getSynonms(String word) throws IOException{
ArrayList synList=new ArrayList();
Hits hits=searcher.search(new TermQUery(newTerm("word",word)));
for(int i=0;i<hits.length();i++){
Document doc=hits.doc(i);
String[] values=doc.getValues("syn");
for (int j=0;j<values.length;j++){
synList.add(values[j]);
}
}
return (String[]) synList.toArray(new String[0]);
}
}
上一篇: android UI小结(五)