yes thank you
> Date: Fri, 24 May 2013 18:59:13 -0400 > Subject: Re: lucene 4.0.0 > From: brendan.grain...@gmail.com > To: java-user@lucene.apache.org > > According to: > http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/index/IndexReader.html#leaves()it > is. > > > On Fri, May 24, 2013 at 6:49 PM, mary meriem <mel-mer...@hotmail.fr> wrote: > > > > > > > I have a problem with AtomicReader reader = > > indexReader.leaves().get(0).reader(); it is topical in Lucene 4.0.0?? > > > > > Date: Fri, 24 May 2013 13:41:05 -0400 > > > Subject: Re: lucene 4.0.0 > > > From: brendan.grain...@gmail.com > > > To: java-user@lucene.apache.org > > > > > > Hi Mary, > > > > > > I've been out of the loop with Lucene and java for a bit so this is might > > > not be too correct, but here is an example of how it might be > > accomplished > > > (also you can see it in this gist: > > https://gist.github.com/rainkinz/5645139). > > > The output looks like this: > > > > > > ** Also note I'm using Lucene 4.3, however I set the version to be > > > Version.LUCENE_40 for you. I don't think the APIs are different in this > > > case. > > > > > > --------------------------------------------------- > > > Term 'mary' appears 5 in the index > > > in doc 0 the term mary appears 1 times at positions 1 > > > in doc 2 the term mary appears 1 times at positions 3 > > > in doc 4 the term mary appears 1 times at positions 1 > > > in doc 8 the term mary appears 1 times at positions 3 > > > in doc 9 the term mary appears 1 times at positions 6 > > > etc > > > > > > > > > > > > import org.apache.lucene.analysis.core.WhitespaceAnalyzer; > > > import org.apache.lucene.document.Document; > > > import org.apache.lucene.document.Field; > > > import org.apache.lucene.document.TextField; > > > import org.apache.lucene.index.*; > > > import org.apache.lucene.store.Directory; > > > import org.apache.lucene.store.RAMDirectory; > > > import org.apache.lucene.util.BytesRef; > > > import org.apache.lucene.util.Version; > > > > > > import java.io.IOException; > > > import java.util.Random; > > > > > > public class CountingTerms { > > > > > > private static final Version VERSION = Version.LUCENE_40; > > > > > > private static final String[] terms = "hi am mary and i have a problem > > > with lucene".split(" "); > > > > > > private final Directory indexDir = new RAMDirectory(); > > > > > > private String randomTerms() { > > > Random rand = new Random(); > > > StringBuilder sb = new StringBuilder(); > > > int numTerms = rand.nextInt(terms.length); > > > for (int i = 0; i < numTerms; i++) { > > > sb.append(terms[rand.nextInt(terms.length)]).append(" "); > > > } > > > return sb.toString(); > > > } > > > > > > private void addDocs(IndexWriter writer) throws IOException { > > > for (int i = 0; i < 10; i++) { > > > Document doc = new Document(); > > > String randomStr = randomTerms(); > > > puts("Adding random str: " + randomStr); > > > IndexableField field = new TextField("text", randomStr, > > > Field.Store.YES); > > > doc.add(field); > > > writer.addDocument(doc); > > > } > > > } > > > > > > private void countTerms() throws IOException { > > > DirectoryReader indexReader = DirectoryReader.open(indexDir); > > > AtomicReader reader = indexReader.leaves().get(0).reader(); > > > > > > Fields fields = reader.fields(); > > > Terms terms = fields.terms("text"); > > > TermsEnum termsEnum = terms.iterator(null); > > > BytesRef term; > > > > > > while ((term = termsEnum.next()) != null) { > > > puts("---------------------------------------------------"); > > > puts("Term '" + term.utf8ToString() + "' appears " + > > > termsEnum.totalTermFreq() + " in the index"); > > > DocsAndPositionsEnum docPosEnum = > > > termsEnum.docsAndPositions(reader.getLiveDocs(), > > > null, > > > DocsAndPositionsEnum.FLAG_OFFSETS); > > > int docid; > > > while ((docid = docPosEnum.nextDoc()) != > > > DocsAndPositionsEnum.NO_MORE_DOCS) { > > > > > > int freq = docPosEnum.freq(); > > > int[] positions = new int[freq]; > > > for (int i = 0; i < freq; i++) { > > > int position = docPosEnum.nextPosition(); > > > positions[i]=position; > > > } > > > > > > puts("in doc " + docid + " the term " + term.utf8ToString() + " > > > appears " + freq + " times at positions " + ppArray(positions)); > > > } > > > > > > } > > > > > > indexReader.close(); > > > } > > > > > > private String ppArray(int[] arr) { > > > StringBuilder sb = new StringBuilder(); > > > for (int i = 0; i < arr.length; i++) { > > > sb.append(arr[i]); > > > if (i + 1 < arr.length) sb.append(", "); > > > } > > > return sb.toString(); > > > } > > > > > > private void puts(Object msg) { > > > System.out.println(msg); > > > } > > > > > > private void index() throws IOException { > > > IndexWriter indexWriter = new IndexWriter(indexDir, > > > new IndexWriterConfig(VERSION, new > > > WhitespaceAnalyzer(VERSION))); > > > addDocs(indexWriter); > > > indexWriter.commit(); > > > indexWriter.close(); > > > } > > > > > > public static void main(String[] args) throws Exception { > > > CountingTerms ct = new CountingTerms(); > > > ct.index(); > > > ct.countTerms(); > > > } > > > > > > } > > > > > > > > > > > > On Fri, May 24, 2013 at 12:14 PM, mary meriem <mel-mer...@hotmail.fr> > > wrote: > > > > > > > hii am mary and i have a problem with lucene, Actually a work with > > lucene > > > > 4.0.0, my problem is, how can I more listed all the terms, the display > > > > position for each term in each document and their frequency?please help > > > > > > > > > > > > > > > > > > > -- > > > Brendan Grainger > > > www.kuripai.com > > > > > > > > -- > Brendan Grainger > www.kuripai.com