读取lucene索引域中的term

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);
            }
      }



评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值