On Wednesday 21 April 2004 19:20, Stephane James Vaucher wrote:
> This is not normal behaviour. Normally using a new IndexSearcher should
> reflect the modified state of your index. Could you post a more
> informative bit of code?
BTW Why can't Lucene care for it itself?
Well, according to my logging it does create a new instance. I use only one
instance of SessoinFacade:
public class SearchFacade extends Observable
{
protected class IndexObserver implements Observer
{
private final Log log = LogFactory.getLog(getClass());
public Searcher indexSearcher;
public IndexObserver()
{
newSearcher(); // init
}
public void update(Observable o, Object arg)
{
log.debug("Index has changed, creating new Searcher" );
newSearcher();
}
private void newSearcher()
{
try
{
indexSearcher = new
IndexSearcher(IndexReader.open(Configuration.LuceneIndex.MAIN));
}
catch (IOException e)
{
log.error("Could not instantiate searcher: " + e);
}
}
public Searcher getIndexSearcher()
{
return indexSearcher;
}
}
private IndexObserver indexObserver;
public SearchFacade()
{
addObserver(indexObserver = new IndexObserver());
}
public void createIndex()
{
...
setChanged(); // index has changed
notifyObservers();
}
public Hits search(String query)
{
Searcher searcher = indexObserver.getIndexSearcher();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]