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]