I use StandardAnalyzer.the records daily ranges from 5 crore to 6 crore. for every second i am updating my Index. i instantiate IndexSearcher object one time for all the searches. for an hour can i see the updated records in the indexstore by reinstantiating IndexSearcher object.but the problem when i reinstantiate IndexSearcher ,my RAM memory gets appended.is there any possibility to control the memory at that time without affecting performance.
testn wrote: > > A couple things to make sure: > 1. When you open IndexWriter, what is the analyzer you use? > StandardAnalyzer? > 2. How many records are there? > 3. Could you also check number of terms in your indices? If there are too > many terms, you could consider chop something in smaller piece for > example... store area code and phone number separately if the numbers are > pretty distributed. > > > Sebastin wrote: >> >> Hi testn, >> here is my index details: >> Index fields :5 fields >> Store Fileds:10 fields >> >> >> Index code: >> >> contents=new StringBuilder().append(compCallingPartyNumber).append(" >> ").append(compCalledPartyNumber).append(" >> ").append(compImsiNumber).append(" ").append(callType).toString(); >> >> >> records=new StringBuilder().append(compCallingPartyNumber).append(" >> ").append(compCalledPartyNumber).append(" >> ").append(compchargDur).append(" ").append(compTimeSc).append(" >> ").append(compImsiNumber).append(" ").append(outgoingRoute).append(" >> ").append(incomingRoute).append(" ").append(cgiLocation).toString(); >> >> >> Document document = new Document(); >> document.add(new Field("contents", >> contents, >> >> Field.Store.NO, >> >> Field.Index.TOKENIZED)); >> document.add(new Field("fil", filen, >> >> Field.Store.NO, >> >> Field.Index.TOKENIZED)); >> document.add(new Field("records", >> records, >> >> Field.Store.YES, >> >> Field.Index.NO)); >> document.add(new Field("dateSc", >> dateSc, >> >> Field.Store.YES, >> >> Field.Index.TOKENIZED)); >> >> indexWriter.addDocument(document); >> >> inputs for the document: >> >> compCallingPartyNumber="9840836588"; >> compCalledPartyNumber="9840861114"; >> compImsiNumber="984510005469874"; >> callType="1"; >> compChargDur="98456"; >> compTimeSc="984"; >> outgoingRoute="i987j"; >> incomingRoute="poi09"; >> cgiLocation="dft1234567"; >> >> here is my search code: >> >> Directory indexDir2 = >> FSDirectory.getDirectory(indexSourceDir02,false); >> IndexReader indexSource2 = >> IndexReader.open(indexDir2); >> Directory indexDir3 = >> >> FSDirectory.getDirectory(indexSourceDir03,false); >> IndexReader indexSource3 = >> IndexReader.open(indexDir3); >> Directory indexDir4 = >> >> FSDirectory.getDirectory(indexSourceDir04,false); >> IndexReader indexSource4 = >> IndexReader.open(indexDir4); >> >> >> >> IndexReader[] readArray = >> {indexSource2,indexSource3,indexSource4}; >> //merged reader >> IndexReader mergedReader = new MultiReader(readArray); >> IndexSearcher is = new IndexSearcher(mergedReader); >> >> >> QueryParser parser = >> new QueryParser("contents" ,new >> StandardAnalyzer()); >> >> >> String searchQuery= >> new >> StringBuffer().append(inputNo).append(" AND dateSc:[" >> ).append(fromDate).append(" TO ").append(toDate).append("]").append(" >> ").append("AND").append(" ").append(callTyp).toString(); >> >> >> >> Query callDetailquery = >> parser.parse(searchQuery); >> >> hits = is.search(callDetailquery); >> >> >> >> >> >> >> >> >> >> testn wrote: >>> >>> Can you provide more info about your index? How many documents, fields >>> and what is the average document length? >>> >>> >>> Sebastin wrote: >>>> >>>> Hi testn, >>>> i index the dateSc as 070904(2007/09/04) format.i am not >>>> using any timestamp here.how can we effectively reopen the >>>> IndexSearcher for an hour and save the memory because my index gets >>>> updated every minute. >>>> >>>> testn wrote: >>>>> >>>>> Check out Wiki for more information at >>>>> http://wiki.apache.org/jakarta-lucene/LargeScaleDateRangeProcessing >>>>> >>>>> >>>>> >>>>> Sebastin wrote: >>>>>> >>>>>> Hi All, >>>>>> i used to search 3 Lucene Index store of size 6 GB,10 GB,10 GB >>>>>> of records using MultiReader class. >>>>>> >>>>>> here is the following code snippet: >>>>>> >>>>>> >>>>>> >>>>>> Directory indexDir2 = >>>>>> >>>>>> FSDirectory.getDirectory(indexSourceDir02,false); >>>>>> IndexReader indexSource2 = >>>>>> IndexReader.open(indexDir2); >>>>>> Directory indexDir3 = >>>>>> >>>>>> FSDirectory.getDirectory(indexSourceDir03,false); >>>>>> IndexReader indexSource3 = >>>>>> IndexReader.open(indexDir3); >>>>>> Directory indexDir4 = >>>>>> >>>>>> FSDirectory.getDirectory(indexSourceDir04,false); >>>>>> IndexReader indexSource4 = >>>>>> IndexReader.open(indexDir4); >>>>>> >>>>>> >>>>>> >>>>>> IndexReader[] readArray = >>>>>> {indexSource2,indexSource3,indexSource4}; >>>>>> //merged reader >>>>>> IndexReader mergedReader = new MultiReader(readArray); >>>>>> IndexSearcher is = new IndexSearcher(mergedReader); >>>>>> >>>>>> >>>>>> QueryParser parser = >>>>>> new QueryParser("contents" ,new >>>>>> StandardAnalyzer()); >>>>>> >>>>>> >>>>>> String searchQuery= >>>>>> new >>>>>> StringBuffer().append(inputNo).append(" AND dateSc:[" >>>>>> ).append(fromDate).append(" TO ").append(toDate).append("]").append(" >>>>>> ").append("AND").append(" ").append(callTyp).toString(); >>>>>> >>>>>> >>>>>> >>>>>> Query callDetailquery = >>>>>> parser.parse(searchQuery); >>>>>> >>>>>> hits = is.search(callDetailquery); >>>>>> >>>>>> >>>>>> it takes 300 MB of RAM for every search and it is very very slow is >>>>>> there any other way to control the Memory and to make search faster.i >>>>>> use SINGLETON to use the IndexSearcher as a one time used object for >>>>>> all the instances. >>>>>> >>>>> >>>>> >>>> >>>> >>> >>> >> >> > > -- View this message in context: http://www.nabble.com/Java-Heap-Space--Out-Of-Memory-Error-tf4376803.html#a12500824 Sent from the Lucene - Java Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]