@Override public Terms terms(String field) throws IOException { return in.terms(field); }
@Override public Terms terms(String field) throws IOException { MultiTerms terms = (MultiTerms) in.terms(field); if (terms == null) { return null; } else { return new MappedMultiTerms(field, mergeState, terms); } }
/** Retrieve term vector for this document and field, or * null if term vectors were not indexed. The returned * Fields instance acts like a single-document inverted * index (the docID will be 0). */ public final Terms getTermVector(int docID, String field) throws IOException { Fields vectors = getTermVectors(docID); if (vectors == null) { return null; } return vectors.terms(field); }
private Terms termsForField( String fieldName ) throws IOException { List<Terms> terms = new ArrayList<>(); List<ReaderSlice> readerSlices = new ArrayList<>(); for ( LeafReader leafReader : allLeafReaders() ) { Fields fields = leafReader.fields(); Terms leafTerms = fields.terms( fieldName ); if ( leafTerms != null ) { ReaderSlice readerSlice = new ReaderSlice( 0, Math.toIntExact( leafTerms.size() ), 0 ); terms.add( leafTerms ); readerSlices.add( readerSlice ); } } Terms[] termsArray = terms.toArray( new Terms[terms.size()] ); ReaderSlice[] readerSlicesArray = readerSlices.toArray( new ReaderSlice[readerSlices.size()] ); return new MultiTerms( termsArray, readerSlicesArray ); }
Fields fields = MultiFields.getFields(indexReader); Terms terms = fields.terms("field"); TermsEnum iterator = terms.iterator(null); BytesRef byteRef = null; while((byteRef = iterator.next()) != null) { String term = new String(byteRef.bytes, byteRef.offset, byteRef.length); }
@Override public Terms terms(String field) throws IOException { Terms result = terms.get(field); if (result != null) return result; // Lazy init: first time this field is requested, we // create & add to terms: final List<Terms> subs2 = new ArrayList<>(); final List<ReaderSlice> slices2 = new ArrayList<>(); // Gather all sub-readers that share this field for(int i=0;i<subs.length;i++) { final Terms terms = subs[i].terms(field); if (terms != null) { subs2.add(terms); slices2.add(subSlices[i]); } } if (subs2.size() == 0) { result = null; // don't cache this case with an unbounded cache, since the number of fields that don't exist // is unbounded. } else { result = new MultiTerms(subs2.toArray(Terms.EMPTY_ARRAY), slices2.toArray(ReaderSlice.EMPTY_ARRAY)); terms.put(field, result); } return result; }
@Override public Terms terms(final String field) throws IOException { Terms terms = in.terms(field); if (terms == null) { return null; } else { return new SortingTerms(terms, infos.fieldInfo(field).getIndexOptions(), docMap); } }
if (numDocs > 0) { terms = uFields.terms(QueryBuilder.U);
public void listTokens(int freq) throws IOException { IndexReader ireader = null; TermsEnum iter = null; Terms terms; try { ireader = DirectoryReader.open(indexDirectory); int numDocs = ireader.numDocs(); if (numDocs > 0) { Fields uFields = MultiFields.getFields(ireader);//reader.getTermVectors(0); terms = uFields.terms(QueryBuilder.DEFS); iter = terms.iterator(); // init uid iterator } while (iter != null && iter.term() != null) { //if (iter.term().field().startsWith("f")) { if (iter.docFreq() > 16 && iter.term().utf8ToString().length() > freq) { LOGGER.warning(iter.term().utf8ToString()); } BytesRef next = iter.next(); if (next==null) {iter=null;} } } finally { if (ireader != null) { try { ireader.close(); } catch (IOException e) { LOGGER.log(Level.WARNING, "An error occurred while closing index reader", e); } } } }
TermsEnum terms = LuceneDocumentStructure.originalTerms( fields.terms( field ), field ); BytesRef termsRef; while ( (termsRef = terms.next()) != null )
@Override public void write(Fields fields) throws IOException { //if (DEBUG) System.out.println("\nBTTW.write seg=" + segment); String lastField = null; for(String field : fields) { assert lastField == null || lastField.compareTo(field) < 0; lastField = field; //if (DEBUG) System.out.println("\nBTTW.write seg=" + segment + " field=" + field); Terms terms = fields.terms(field); if (terms == null) { continue; } TermsEnum termsEnum = terms.iterator(); TermsWriter termsWriter = new TermsWriter(fieldInfos.fieldInfo(field)); while (true) { BytesRef term = termsEnum.next(); //if (DEBUG) System.out.println("BTTW: next term " + term); if (term == null) { break; } //if (DEBUG) System.out.println("write field=" + fieldInfo.name + " term=" + brToString(term)); termsWriter.write(term, termsEnum); } termsWriter.finish(); //if (DEBUG) System.out.println("\nBTTW.write done seg=" + segment + " field=" + field); } }
if (deleteTerm.field().equals(lastField) == false) { lastField = deleteTerm.field(); Terms terms = fields.terms(lastField); if (terms != null) { termsEnum = terms.iterator();
if (numDocs > 0) { terms = uFields.terms(QueryBuilder.U);
final Terms terms = fields.terms(field); if (terms == null) { continue; final Terms fieldTerms = fields.terms(field); if (fieldTerms == null) { final long v = fields.terms(field).getSumTotalTermFreq(); if (v != -1 && sumTotalTermFreq != v) { throw new RuntimeException("sumTotalTermFreq for field " + field + "=" + v + " != recomputed sumTotalTermFreq=" + sumTotalTermFreq); final long v = fields.terms(field).getSumDocFreq(); if (v != -1 && sumDocFreq != v) { throw new RuntimeException("sumDocFreq for field " + field + "=" + v + " != recomputed sumDocFreq=" + sumDocFreq); termCount = fields.terms(field).size();
Terms terms = tfv.terms(field); TermsEnum termsEnum = terms.iterator(); final boolean postingsHasFreq = fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS) >= 0; final boolean vectorsHasPayload = terms.hasPayloads(); Terms postingsTerms = postingsFields.terms(field); if (postingsTerms == null) { throw new RuntimeException("vector field=" + field + " does not exist in postings; doc=" + j);
@Override public Terms terms(String field) throws IOException { ensureOpen(); return fields.terms(field); }
lastFieldName = fieldName; final Terms terms = vectors.terms(fieldName); if (terms == null) {
lastFieldName = fieldName; final Terms terms = vectors.terms(fieldName); if (terms == null) {
private void buildField(XContentBuilder builder, final CharsRefBuilder spare, Fields theFields, Iterator<String> fieldIter) throws IOException { String fieldName = fieldIter.next(); builder.startObject(fieldName); Terms curTerms = theFields.terms(fieldName); // write field statistics buildFieldStatistics(builder, curTerms); builder.startObject(FieldStrings.TERMS); TermsEnum termIter = curTerms.iterator(); BoostAttribute boostAtt = termIter.attributes().addAttribute(BoostAttribute.class); for (int i = 0; i < curTerms.size(); i++) { buildTerm(builder, spare, curTerms, termIter, boostAtt); } builder.endObject(); builder.endObject(); }
private List<Object> distinctTerms(@Name("label") String label, @Name("key") String key) throws SchemaRuleNotFoundException, IndexNotFoundKernelException, IOException, DuplicateSchemaRuleException { SimpleIndexReader reader = getLuceneIndexReader(label,key); SortedIndexReader sortedIndexReader = new SortedIndexReader(reader, 0, Sort.INDEXORDER); Set<Object> values = new LinkedHashSet<>(100); TermsEnum termsEnum; Fields fields = MultiFields.getFields(sortedIndexReader.getIndexSearcher().getIndexReader()); Terms terms = fields.terms("string"); if (terms != null) { termsEnum = terms.iterator(); while ((termsEnum.next()) != null) { values.add(termsEnum.term().utf8ToString()); } } return new ArrayList<>(values); }