I set IndexSearcher as the application Object after the first search.

here is my code:

                             if(searcherOne.isOpen()==(true)){       
     
                                         Directory compressDir2 = 
                     
FSDirectory.getDirectory(compressionSourceDir02,false);
                                         IndexReader compressedSource2 =
IndexReader.open(compressDir2);
                                       Directory compressDir3 = 
                                            
FSDirectory.getDirectory(compressionSourceDir03,false);
                                         IndexReader compressedSource3 =
IndexReader.open(compressDir3);
                                         Directory compressDir4 = 
                                            
FSDirectory.getDirectory(compressionSourceDir04,false);
                                         IndexReader compressedSource4 =
IndexReader.open(compressDir4); 
                                        
          
                                         
        IndexReader[] readArray =
{compressedSource2,compressedSource3,compressedSource4};
        //merged reader
        IndexReader mergedReader = new MultiReader(readArray);
        IndexSearcher is = new IndexSearcher(mergedReader);
                                 BooleanQuery.setMaxClauseCount(1000000000);
        searcherOne.setIndexSearch(is);
                                         searcherOne.setOpen(false);
                                 BigInteger _l = new BigInteger(mobile1,
10);
                                 _mobile = _l.toString(36);
                                 QueryParser parser = 
                                     new QueryParser(AppConstants.CONTENTS,
new StandardAnalyzer());
                                 
                                 
                                searchQuery= 
                                       new
StringBuffer().append(_mobile).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);
                                 System.out.println("FirstSearch");
                                 
                                 
                             }
      // System.out.println("No Of MAXIMUM dOCUMENTS : " +is.maxDoc());
      else{
          
       is=searcherOne.getIndexSearch();
      
        BigInteger _l = new BigInteger(mobile1, 10);
        _mobile = _l.toString(36);
   
        BooleanQuery.setMaxClauseCount(1000000000);
        QueryParser parser = 
            new QueryParser(AppConstants.CONTENTS, new StandardAnalyzer());
        
          searchQuery=new StringBuffer().append(_mobile).append("
").append(" AND dateSc:[" ).append(fromDate).append(" TO
").append(toDate).append("]").append(" ").append("AND").append("
").append(callTyp).toString(); 
         
              
           
       
        
        
         callDetailquery = parser.parse(searchQuery);
        
      hits = is.search(callDetailquery);
             

how can i reconstruct the new IndexSearcher for every hour to see the
updated records .
                                     


hossman wrote:
> 
> 
> : 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
> 
> skimming hte code below, you are opening an IndexSearcher over a 
> MultiReader over 4 seperate IndexReaders ... when you instantiate a new 
> IndexSearcher are you explicitly closing both the old IndexSearcher as 
> well as all of 4 of those old IndexReaders and the MultiReader?
> 
> closing an IndexSearcher will only close the underlying Reader if it 
> opened it .. and a MultiReader constructed from other IndexReaders will 
> never close them.
> 
> -Hoss
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Java-Heap-Space--Out-Of-Memory-Error-tf4376803.html#a12515624
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]

Reply via email to