You can implement a ServletListener for your app and open the index there (in the contextInitialized method). You can then create the SearcherManager from the IndexReader/Searcher and store it in the ServletContext, where it can be fetched out by your REST servlets.
This is a typical pattern that we use for lots of Web apps that use resources like Lucene. On Thu, Sep 5, 2013 at 12:05 PM, Ian Lea <[email protected]> wrote: > I use a singleton class but there are other ways in tomcat. Can't > remember what - maybe application scope. > > > -- > Ian. > > > On Thu, Sep 5, 2013 at 4:46 PM, David Miranda <[email protected]> > wrote: > > Where I can initialize the SearchManager variable to after use it in the > > REST servlet to do research in the index? > > > > > > 2013/9/5 Ian Lea <[email protected]> > > > >> I think that blog post was bleeding edge and the API changed a bit > >> subsequently. > >> > >> I use > >> > >> Directory dir = whatever; > >> SearcherManager sm = new SearcherManager(dir, new SearcherFactory()); > >> > >> to get default behaviour. The javadocs for SearcherFactory explain > >> that you can write your own implementation if you want custom > >> behaviour such as warming. > >> > >> > >> -- > >> Ian. > >> > >> > >> On Thu, Sep 5, 2013 at 3:53 PM, David Miranda < > [email protected]> > >> wrote: > >> > Hi, > >> > > >> > I'm trying to implement my code with SearchManager to make my app > >> > thread-safe. I'm follow this post: > >> > > >> > http://blog.mikemccandless.com/2011/09/lucenes-searchermanager-simplifies.html > >> > > >> > There is a class that implements "SearchWarmer". I can't find this > class > >> in > >> > the Lucene library, what class is that? > >> > > >> > Thanks. > >> > > >> > > >> > 2013/9/5 Aditya <[email protected]> > >> > > >> >> Hi > >> >> > >> >> You want to use REST service for your search, then my advice would > be to > >> >> use Solr. As it has buitl-in functionality of REST API. > >> >> > >> >> If you want to use Lucene then below are my comments: > >> >> 1. In do search function, you are creating reader object. If this > call > >> is > >> >> invoked for every query then it would be very expensive. You need to > >> create > >> >> it once globally and re opon it, if the index is modified. Its better > >> use > >> >> SearchManager. > >> >> > >> >> Regards > >> >> Aditya > >> >> www.findbestopensource.com - Search from 1 Million open source > >> projects. > >> >> > >> >> > >> >> > >> >> On Thu, Sep 5, 2013 at 6:46 AM, David Miranda < > >> [email protected] > >> >> >wrote: > >> >> > >> >> > Hi, > >> >> > > >> >> > I'm developing a web application, that contains a REST service in > the > >> >> > Tomcat, that receives several requests per second. > >> >> > The REST requests do research in a Lucene index, to do this i use > the > >> >> > IndexSearch. > >> >> > > >> >> > My questions are: > >> >> > - There are concurrency problems in multiple research? > >> >> > - What the best design pattern to do this? > >> >> > > >> >> > public class IndexResearch(){ > >> >> > > private static int MAX_HITS = 500; > >> >> > > private static String DIRECTORY = "indexdir"; > >> >> > > private IndexSearcher searcher; > >> >> > > private StandardAnalyzer analyzer; > >> >> > > > >> >> > > >> >> > > >> >> > > >> >> > > public IndexResearch(){ > >> >> > > } > >> >> > > public String doSearch(String text){ > >> >> > > analyzer = new StandardAnalyzer(Version.LUCENE_43); > >> >> > > topic = QueryParser.escape(topic); > >> >> > > Query q = new QueryParser(Version.LUCENE_43, "field", > analyzer > >> >> > > ).parse(text); > >> >> > > File indexDirectory = new File(DIRECTORY); > >> >> > > IndexReader reader; > >> >> > > reader = > >> DirectoryReader.open(FSDirectory.open(indexDirectory)); > >> >> > > searcher = new IndexSearcher(reader); > >> >> > > > >> >> > /*more code*/ > >> >> > > >> >> > > } > >> >> > > } > >> >> > > >> >> > > >> >> > Can I create, in the servlet, one object of this class per client > >> request > >> >> > (Is that the best design pattern)? > >> >> > > >> >> > Thanks in advance. > >> >> > > >> >> > >> > > >> > > >> > > >> > -- > >> > Cumprimentos, > >> > David Miranda > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [email protected] > >> For additional commands, e-mail: [email protected] > >> > >> > > > > > > -- > > Cumprimentos, > > David Miranda > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- Stephen Green http://thesearchguy.wordpress.com
