您的位置:首页 > 编程语言 > Java开发

读取lucene索引域中的term

2016-07-14 15:06 267 查看
1.读取某个域的tem

Directory dir = FSDirectory.open(new File(indexDir));
IndexReader reader = DirectoryReader.open(dir)
int numDocs = reader.maxDoc();
for(int i=0;i < numDocs;i++){ //i自行设置,这里遍历了所有的文档
Document doc = reader.document(id);
Terms vector = reader.getTermVector(id, "subject");
TermsEnum termsEnums = vector.iterator(null);
BytesRef byteRef = null;
BooleanQuery subjectQuery = new BooleanQuery();
while((byteRef = termsEnums.next()) != null){
String term = new String(byteRef.bytes);
System.out.println("term :" + term);
}


2.读取索引所有域的term

Directory dir = FSDirectory.open(new File(indexDir));
IndexReader reader = DirectoryReader.open(dir)
Fields fields = MultiFields.getFields(reader );
Iterator<String> fieldsIterator = fields.iterator();
while(fieldsIterator.hasNext()){
String field = fieldsIterator.next();
Terms terms = fields.terms(field);
TermsEnum termsEnums = terms.iterator(null);
BytesRef byteRef = null;
System.out.println("field : "+ field);
while((byteRef = termsEnums.next()) != null) {
String term = new String(byteRef.bytes, byteRef.offset, byteRef.length);
System.out.println("term is : " + term);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java lucene 索引