On Jul 8, 2005, at 10:32 AM, Terence Lai wrote:
I have implemented the way as you described, and it is now working
probably. However, I have a concern on the performance of my
implementation.
Since I am using parallelMultiSearcher to perform the search. I
have no idea on which index directory is corresponding to the
document that I am trying to highlight. The way my application
works is indicated as follows:
You can get the "index" of the Searchable using:
int indexIndex = searcher.subSearcher(hits.id(position));
(borrowed from lucenebook.com code)
Where position is the position in the Hits for the document.
1) user enter a keyword search criteria for the document contents
2) the system returns a list of document titles with hyper links to
drill down to the contents.
3) upon the user click the hyper link of the individual document,
the application will perform the highlight based on the search
criteria cached from Step (1)
Because of this, the application does not keep track of which index
directory is associated with the search result document. Currently,
I have to make another search using the document primary key to
locate the searcher, and using this individual searcher to rewrite
my query. However, it invokes an extra search operation which may
be costly.
My recommendation is to encode in the drill-down hyperlink the index
"index" and the document id within that index.
Therefore, I originally tried to use the
ParallelMultiSearcher.rewrite() to convert the query into a
primitive form. Doing this way, I don't need to worry about which
index directory is belong to the index document. Is there any
reason why the method not being supported?
I'm not quite qualified to answer this fully, but rewriting a query
may involve enumerating the terms and it needs to get those terms
from an index. With the MultiSearcher's, which index that would be
is undefined.
I am trying to think of an alternative way. Is that possible for me
to loop through all the individual searchers and perform an
IndexSearcher.rewrite with each searcher. At the end, I create a
BooleanQuery to join them together with BooleanQuery(subQuery,
false, false); Do you think this will work? Is there any issue if I
do this?
That seems unnecessary. I think the approach of keeping track of
which index a result came from will work for the situation you've
described.
Erik
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]