Author: echatellier Date: 2011-06-29 12:23:27 +0200 (Wed, 29 Jun 2011) New Revision: 996 Url: http://nuiton.org/repositories/revision/wikitty/996 Log: Init lucene index when build lucene storage service Modified: trunk/wikitty-lucene/src/main/java/org/nuiton/wikitty/storage/lucene/WikittySearchEngineLucene.java Modified: trunk/wikitty-lucene/src/main/java/org/nuiton/wikitty/storage/lucene/WikittySearchEngineLucene.java =================================================================== --- trunk/wikitty-lucene/src/main/java/org/nuiton/wikitty/storage/lucene/WikittySearchEngineLucene.java 2011-06-29 09:54:51 UTC (rev 995) +++ trunk/wikitty-lucene/src/main/java/org/nuiton/wikitty/storage/lucene/WikittySearchEngineLucene.java 2011-06-29 10:23:27 UTC (rev 996) @@ -104,7 +104,6 @@ import com.browseengine.bobo.api.FacetSpec; import com.browseengine.bobo.facets.FacetHandler; import com.browseengine.bobo.facets.impl.MultiValueFacetHandler; -import com.browseengine.bobo.facets.impl.SimpleFacetHandler; /** * Wikitty search engine implementation based on Lucene for storage and search @@ -142,6 +141,19 @@ try { indexDirectory = getIndexDirectory(config); indexAnalyzer = getIndexAnalyzer(config); + + // hack to create lucene index + // new IndexSearcher fails with no index + if (!IndexReader.indexExists(indexDirectory)) { + IndexWriter writer = null; + try { + IndexWriterConfig indexWriterConfig = new IndexWriterConfig(WIKITTY_LUCENE_VERSION, indexAnalyzer); + writer = new IndexWriter(indexDirectory, indexWriterConfig); + writer.commit(); + } catch (IOException ex) { + IOUtils.closeQuietly(writer); + } + } } catch (IOException ex) { throw new WikittyException("Can't init lucene directory", ex); } @@ -225,10 +237,12 @@ writer.deleteAll(); writer.commit(); } catch (IOException ex) { - try { - writer.rollback(); - } catch (IOException e) { - throw new WikittyException("Can't rollback index", ex); + if (writer != null) { + try { + writer.rollback(); + } catch (IOException e) { + throw new WikittyException("Can't rollback index", ex); + } } throw new WikittyException("Can't clear index", ex); } finally { @@ -244,7 +258,7 @@ public void store(WikittyTransaction transaction, Collection<Wikitty> wikitties, boolean force) { long startTime = TimeLog.getTime(); - + IndexWriter writer = null; IndexSearcher searcher = null; try {