Examples of TermDocs


Examples of org.apache.lucene.index.TermDocs

     */
    final Class<?> entityType = work.getEntityClass();
    log.trace( "Removing {}#{} from Lucene index.", entityType, work.getId() );
    DocumentBuilder<?> builder = workspace.getDocumentBuilder( entityType );
    Term term = builder.getTerm( work.getId() );
    TermDocs termDocs = null;
    try {
      //TODO is there a faster way?
      //TODO include TermDocs into the workspace?
      termDocs = reader.termDocs( term );
      String entityName = entityType.getName();
      while ( termDocs.next() ) {
        int docIndex = termDocs.doc();
        if ( entityName.equals( reader.document( docIndex ).get( DocumentBuilder.CLASS_FIELDNAME ) ) ) {
          //remove only the one of the right class
          //loop all to remove all the matches (defensive code)
          reader.deleteDocument( docIndex );
        }
      }
      //TODO shouldn't this use workspace.incrementModificationCounter( 1 ) ?
    }
    catch ( Exception e ) {
      throw new SearchException(
          "Unable to remove from Lucene index: "
              + entityType + "#" + work.getId(), e
      );
    }
    finally {
      if ( termDocs != null ) {
        try {
          termDocs.close();
        }
        catch ( IOException e ) {
          log.warn( "Unable to close termDocs properly", e );
        }
      }
View Full Code Here

Examples of org.apache.lucene.index.TermDocs

    FieldType ftleft=schema.getFieldType(fieldLeft);
   
    String prefixLeft=TrieField.getMainValuePrefix(ftleft);
    Term tiLeft=new Term(fieldLeft, prefixLeft==null?"":prefixLeft);
    TermEnum teLeft = null;
    TermDocs tdleft=null;
    if(this.leftreader!=null)
    {
      this.joinRevert=new int[this.leftreader.maxDoc()+1];
      tdleft=this.leftreader.termDocs();
      teLeft=this.leftreader.terms(tiLeft);
    }else{
      this.joinRevert=new int[readerleft.getReader().maxDoc()+1];
      teLeft=readerleft.getReader().terms(tiLeft);
      tdleft=readerleft.getReader().termDocs();
    }
   
    for(int i=0;i<this.joinRevert.length;i++)
    {
      this.joinRevert[i]=-1;
    }
   

   
    FieldType ftright =readerright.getSchema().getFieldType(fieldRigth);
    String prefixRight=TrieField.getMainValuePrefix(ftright);
    Term tiRight=new Term(fieldRigth, prefixRight==null?"":prefixRight);
   
    TermEnum teRight = readerright.getReader().terms(tiRight.createTerm(prefixRight==null?"":prefixRight));
    TermDocs tdRight=readerright.getReader().termDocs();
    this.join=new int[readerright.getReader().maxDoc()+1][];
    for(int i=0;i<this.join.length;i++)
    {
      this.join[i]=null;
    }
View Full Code Here

Examples of org.apache.lucene.index.TermDocs

   
    int limitsize=this.getLimitSize();

    PriorityQueue<MixTermInfo> termDocslist=new PriorityQueue<MixTermInfo>(limitsize,Collections.reverseOrder(UnInvertedFieldUtils.TD_CMP));

    TermDocs tdreader=reader.termDocs(1024);
    int maxTermNum=0;
    for (;;) {
      Term t = te.term();
      if (t == null) {
        break;
      }

      int termNum = te.getTermNumber();
     
      if(termNum%100000==0)
      {
        log.info("termsInverted " +termNum+"@"+ this.uni.field + ",limitsize=" + limitsize);
      }
     
      int df=te.docFreq();
     
      if(!this.isFinish())
      {
        TermDocs td = te.getTermDocs();
        if(df<=SKIP_MIN||this.uni.baseAdvanceDocs==null)
        {
          td.seek(te);
          this.set_Doc2TermNum_NonSkip(td, docs, freqs, termNum,true,maxDoc);
        } else {

          MixTermInfo cl = new MixTermInfo(df, termNum, tdreader,  new Term(t.field(), t.text()));
          if (termDocslist.size() < limitsize) {
            termDocslist.add(cl);
          } else {
            MixTermInfo peek = termDocslist.peek();
            if (UnInvertedFieldUtils.TD_CMP.compare(peek, cl) > 0 && cl.getCount() / (peek.getCount() + 1) > 1.5) {
              termDocslist.add(cl);
              MixTermInfo cl_old = termDocslist.poll();
              this.set_Doc2TermNum_NonSkip(cl_old.getTd(), docs,freqs, cl_old.getTermNum(), true, maxDoc);
            } else {
              td.seek(te);
              this.set_Doc2TermNum_NonSkip(td, docs, freqs,termNum, true, maxDoc);
            }
          }
        }
      }
View Full Code Here

Examples of org.apache.lucene.index.TermDocs

    int maxDoc=reader.maxDoc();
    int limitsize=this.getLimitSize();

    PriorityQueue<MixTermInfo> termDocslist=new PriorityQueue<MixTermInfo>(limitsize,Collections.reverseOrder(UnInvertedFieldUtils.TD_CMP));
    TermDocs tdreader=reader.termDocs(1024);

    for (;;) {
      Term t = te.term();
      if (t == null) {
        break;
      }

      if (this.isFinish()) {
        break;
      }

      int termNum = te.getTermNumber();

      if (termNum%10000==0) {
        log.info("termsInverted " +termNum+"@"+ this.uni.field + ",limitsize=" + limitsize);
      }
      TermDocs td = te.getTermDocs();

      int df = te.docFreq();
      if (df <= SKIP_MIN || this.uni.baseAdvanceDocs == null) {
        td.seek(te);
        this.set_Doc2TermNum_NonSkip(td, docs, freqs, termNum, false, maxDoc);
      } else {
        MixTermInfo cl = new MixTermInfo(df, termNum, tdreader,  new Term(t.field(), t.text()));
        if (termDocslist.size() < limitsize) {
          termDocslist.add(cl);
        } else {
          MixTermInfo peek = termDocslist.peek();
          if (UnInvertedFieldUtils.TD_CMP.compare(peek, cl) > 0 && cl.getCount() / (peek.getCount() + 1) > 1.5) {
            termDocslist.add(cl);
            MixTermInfo cl_old = termDocslist.poll();
            this.set_Doc2TermNum_NonSkip(cl_old.getTd(), docs,  freqs, cl_old.getTermNum(), false, maxDoc);
          } else {
            td.seek(te);
            this.set_Doc2TermNum_NonSkip(td, docs, freqs, termNum, false, maxDoc);
          }
        }
      }
      te.next();
View Full Code Here

Examples of org.apache.lucene.index.TermDocs

    return new Sort(newSorts);
  }

  public int getFirstMatch(Term t) throws IOException {
    TermDocs tdocs = null;
    try {
      tdocs = reader.termDocs(t);
      if (!tdocs.next()) return -1;
      return tdocs.doc();
    } finally {
      if (tdocs!=null) tdocs.close();
    }
  }
View Full Code Here

Examples of org.apache.lucene.index.TermDocs

      collector.setNextReader(subReader, baseDoc);
      int max = subReader.maxDoc();

      if (idIter == null) {
        TermDocs tdocs = subReader.termDocs(null);
        while (tdocs.next()) {
          int docid = tdocs.doc();
          collector.collect(docid);
        }
      } else {
        for (int docid = -1; (docid = idIter.advance(docid+1)) < max; ) {
          if (subReader.isDeleted(docid)) continue;
View Full Code Here

Examples of org.apache.lucene.index.TermDocs

        int[] freq = new int[256];
        for (int i=0; i<readers.length; i++) {
          SolrIndexReader sir = readers[i];
          int offset = offsets[i];
          collector.setNextReader(sir, offset);
          TermDocs tdocs = sir.termDocs(t);
          for(;;) {
            int num = tdocs.read(arr, freq);
            if (num==0) break;
            for (int j=0; j<num; j++) {
              collector.collect(arr[j]);
            }
          }
          tdocs.close();
        }
      } else {
        super.search(query,null,collector);
      }
      return collector.getDocSet();
View Full Code Here

Examples of org.apache.lucene.index.TermDocs

    this.prefix = prefix;
  }

  public void generate(IndexReader reader) throws IOException {
    TermEnum enumerator = reader.terms(prefix);
    TermDocs termDocs = reader.termDocs();

    try {

      String prefixText = prefix.text();
      String prefixField = prefix.field();
      do {
        Term term = enumerator.term();
        if (term != null &&
            term.text().startsWith(prefixText) &&
            term.field() == prefixField)
        {
          termDocs.seek(term);
          while (termDocs.next()) {
            handleDoc(termDocs.doc());
          }
        } else {
          break;
        }
      } while (enumerator.next());
    } finally {
      termDocs.close();
      enumerator.close();
    }
  }
View Full Code Here

Examples of org.apache.lucene.index.TermDocs

    this.wildcard = wildcard;
  }

  public void generate(IndexReader reader) throws IOException {
    TermEnum enumerator = new WildcardTermEnum(reader, wildcard);
    TermDocs termDocs = reader.termDocs();
    try {
      do {
        Term term = enumerator.term();
        if (term==null) break;
        termDocs.seek(term);
        while (termDocs.next()) {
          handleDoc(termDocs.doc());
        }
      } while (enumerator.next());
    } finally {
      termDocs.close();
      enumerator.close();
    }
  }
View Full Code Here

Examples of org.apache.lucene.index.TermDocs

    List<String> notFound = new ArrayList<String>();
    int notFoundCount=0;
    int otherErrors=0;

    TermDocs termDocs = null;
    Term protoTerm = new Term(idName, "");
    TermEnum termEnum = null;
    // Number of times to try termEnum.next() before resorting to skip
    int numTimesNext = 10;

    char delimiter='=';
    String termVal;
    boolean hasNext=true;
    String prevKey="";

    String lastVal="\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF\uFFFF";

    try {
      termDocs = reader.termDocs();
      termEnum = reader.terms(protoTerm);
      Term t = termEnum.term();
      if (t != null && t.field() == idName) { // intern'd comparison
        termVal = t.text();
      } else {
        termVal = lastVal;
      }


      for (String line; (line=r.readLine())!=null;) {
        int delimIndex = line.lastIndexOf(delimiter);
        if (delimIndex < 0) continue;

        int endIndex = line.length();
        /* EOLs should already be removed for BufferedReader.readLine()
        for(int endIndex = line.length();endIndex>delimIndex+1; endIndex--) {
          char ch = line.charAt(endIndex-1);
          if (ch!='\n' && ch!='\r') break;
        }
        */
        String key = line.substring(0, delimIndex);
        String val = line.substring(delimIndex+1, endIndex);

        String internalKey = idType.toInternal(key);
        float fval;
        try {
          fval=Float.parseFloat(val);
        } catch (Exception e) {
          if (++otherErrors<=10) {
            SolrCore.log.error( "Error loading external value source + fileName + " + e
              + (otherErrors<10 ? "" : "\tSkipping future errors for this file.")                   
            );
          }
          continue// go to next line in file.. leave values as default.
        }

        if (sorted) {
          // make sure this key is greater than the previous key
          sorted = internalKey.compareTo(prevKey) >= 0;
          prevKey = internalKey;

          if (sorted) {
            int countNext = 0;
            for(;;) {
              int cmp = internalKey.compareTo(termVal);
              if (cmp == 0) {
                termDocs.seek(termEnum);
                while (termDocs.next()) {
                  vals[termDocs.doc()] = fval;
                }
                break;
              } else if (cmp < 0) {
                // term enum has already advanced past current key... we didn't find it.
                if (notFoundCount<10) {  // collect first 10 not found for logging
                  notFound.add(key);
                }
                notFoundCount++;
                break;
              } else {
                // termEnum is less than our current key, so skip ahead

                // try next() a few times to see if we hit or pass the target.
                // Lucene's termEnum.skipTo() is currently unoptimized (it just does next())
                // so the best thing is to simply ask the reader for a new termEnum(target)
                // if we really need to skip.
                if (++countNext > numTimesNext) {
                  termEnum = reader.terms(protoTerm.createTerm(internalKey));
                  t = termEnum.term();
                } else {
                  hasNext = termEnum.next();
                  t = hasNext ? termEnum.term() : null;
                }

                if (t != null && t.field() == idName) { // intern'd comparison
                  termVal = t.text();
                } else {
                  termVal = lastVal;
                }
              }
            } // end for(;;)
          }
        }

        if (!sorted) {
          termEnum = reader.terms(protoTerm.createTerm(internalKey));
          t = termEnum.term();
          if (t != null && t.field() == idName  // intern'd comparison
                  && internalKey.equals(t.text()))
          {
            termDocs.seek (termEnum);
            while (termDocs.next()) {
              vals[termDocs.doc()] = fval;
            }
          } else {
            if (notFoundCount<10) {  // collect first 10 not found for logging
              notFound.add(key);
            }
            notFoundCount++;
          }
        }
      }
    } catch (IOException e) {
      // log, use defaults
      SolrCore.log.error("Error loading external value source: " +e);
    } finally {
      // swallow exceptions on close so we don't override any
      // exceptions that happened in the loop
      if (termDocs!=null) try{termDocs.close();}catch(Exception e){}
      if (termEnum!=null) try{termEnum.close();}catch(Exception e){}
      try{r.close();}catch(Exception e){}
    }

    SolrCore.log.info("Loaded external value source " + fname
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.