List of usage examples for org.apache.lucene.index IndexWriter commit
@Override public final long commit() throws IOException
Commits all pending changes (added and deleted documents, segment merges, added indexes, etc.) to the index, and syncs all referenced index files, such that a reader will see the changes and the index updates will survive an OS or machine crash or power loss.
From source file:org.moxie.proxy.LuceneExecutor.java
License:Apache License
/** * Incrementally update the index.// w w w . j a v a 2s .c om * * @return pomFile */ private void incrementalIndex(File pomFile) { try { String repository = config.getRepositoryId(pomFile); IMavenCache cache = config.getMavenCache(repository); Pom pom = PomReader.readPom(cache, pomFile); delete(repository, pom); IndexWriter writer = getIndexWriter(repository); Document doc = new Document(); doc.add(new Field(FIELD_PACKAGING, pom.packaging, Store.YES, Index.NOT_ANALYZED_NO_NORMS)); doc.add(new Field(FIELD_GROUPID, pom.groupId, Store.YES, Index.ANALYZED)); doc.add(new Field(FIELD_ARTIFACTID, pom.artifactId, Store.YES, Index.ANALYZED)); doc.add(new Field(FIELD_VERSION, pom.version, Store.YES, Index.ANALYZED)); if (!StringUtils.isEmpty(pom.name)) { doc.add(new Field(FIELD_NAME, pom.name, Store.YES, Index.ANALYZED)); } if (!StringUtils.isEmpty(pom.description)) { doc.add(new Field(FIELD_DESCRIPTION, pom.description, Store.YES, Index.ANALYZED)); } String date = DateTools.timeToString(pomFile.lastModified(), Resolution.MINUTE); doc.add(new Field(FIELD_DATE, date, Store.YES, Index.ANALYZED)); // add the pom to the index writer.addDocument(doc); writer.commit(); resetIndexSearcher(repository); config.resetRepositorySize(repository); } catch (Exception e) { logger.log(Level.SEVERE, "Exception while indexing " + pomFile, e); } }
From source file:org.moxie.proxy.LuceneExecutor.java
License:Apache License
private boolean delete(String repository, Pom pom) throws IOException { BooleanQuery query = new BooleanQuery(); Term groupTerm = new Term(FIELD_GROUPID, pom.groupId); query.add(new TermQuery(groupTerm), Occur.MUST); Term artifactTerm = new Term(FIELD_ARTIFACTID, pom.artifactId); query.add(new TermQuery(artifactTerm), Occur.MUST); Term versionTerm = new Term(FIELD_VERSION, pom.version); query.add(new TermQuery(versionTerm), Occur.MUST); IndexWriter writer = getIndexWriter(repository); int numDocsBefore = writer.numDocs(); writer.deleteDocuments(query);/*from w w w . j a v a2 s .c om*/ writer.commit(); int numDocsAfter = writer.numDocs(); if (numDocsBefore == numDocsAfter) { logger.fine(MessageFormat.format("no records found to delete {0}", query.toString())); return false; } else { logger.fine(MessageFormat.format("deleted {0} records with {1}", numDocsBefore - numDocsAfter, query.toString())); return true; } }
From source file:org.ms123.common.data.lucene.LuceneServiceImpl.java
License:Open Source License
public synchronized void commit(LuceneSession session) { IndexWriter tiw = session.getIndexWriter(); String namespace = session.getStoreDesc().getNamespace(); try {// w w w .j a v a2 s. com IndexReader ir = IndexReader.open(tiw, true); IndexWriter riw = getRealIndexWriter(namespace); deleteExistingDocs(session, riw); riw.addIndexes(ir); riw.maybeMerge(); riw.commit(); tiw.getDirectory().close(); } catch (Exception e) { e.printStackTrace(); } }
From source file:org.ms123.common.data.lucene.LuceneServiceImpl.java
License:Open Source License
public synchronized void addToIndex(LuceneSession session, Object obj) { IndexWriter iw = session.getIndexWriter(); StoreDesc sdesc = session.getStoreDesc(); String namespace = sdesc.getNamespace(); try {// w w w. j a v a 2 s .c om String entityName = getEntityName(obj); Object id = getId(obj, session.getPrimaryKey()); //System.out.println("addToIndex:"+id+"/iw:"+iw); Map p = new HashMap(); p.put("view", "global-search"); p.put(ENTITY, entityName); p.put(StoreDesc.STORE_ID, sdesc.getStoreId()); p.put(StoreDesc.PACK, sdesc.getPack()); List<Map> searchFields = m_settingService.getFieldsForEntityView(sdesc.getNamespace(), entityName, "global-search"); Document doc = new Document(); Field field = new Field(ENTITY, entityName, Field.Store.YES, Field.Index.NOT_ANALYZED); doc.add(field); if (id instanceof Long) { NumericField nfield = new NumericField("id_numeric", Field.Store.YES, true); nfield = nfield.setLongValue((Long) id); doc.add(nfield); } field = new Field("id", id.toString(), Field.Store.YES, Field.Index.NOT_ANALYZED); doc.add(field); populate(obj, searchFields, doc); String[] _id = new String[2]; _id[0] = id.toString(); _id[1] = entityName; session.addId(_id); iw.addDocument(doc); iw.commit(); } catch (Exception e) { try { iw.rollback(); } catch (Exception x) { } e.printStackTrace(); throw new RuntimeException(e); } }
From source file:org.ms123.common.data.lucene.LuceneServiceImpl.java
License:Open Source License
public synchronized void deleteFromIndex(LuceneSession session, Object obj) { StoreDesc sdesc = session.getStoreDesc(); String namespace = sdesc.getNamespace(); IndexWriter iw = getRealIndexWriter(namespace); try {/*from w w w. ja va 2 s . c o m*/ String entityName = getEntityName(obj); Object id = PropertyUtils.getProperty(obj, session.getPrimaryKey()); Term term1 = new Term("id", id.toString()); Term term2 = new Term(ENTITY, entityName); TermQuery query1 = new TermQuery(term1); TermQuery query2 = new TermQuery(term2); BooleanQuery and = new BooleanQuery(); and.add(query1, BooleanClause.Occur.MUST); and.add(query2, BooleanClause.Occur.MUST); IndexSearcher is = getIndexSearcher(namespace, iw); TopDocs hits = is.search(and, 10); if (hits.scoreDocs.length == 0) { System.out.println("LuceneServiceImpl.deleteFromIndex:id(" + id + ") not found"); } else if (hits.scoreDocs.length == 1) { System.out.println("LuceneServiceImpl.deleting:" + and); iw.deleteDocuments(and); } else if (hits.scoreDocs.length > 1) { throw new IllegalArgumentException( "LuceneServiceImpl.delete:Term (" + and + ") matches more than 1 document in the index."); } iw.commit(); } catch (Exception e) { try { iw.rollback(); } catch (Exception x) { } e.printStackTrace(); throw new RuntimeException(e); } }
From source file:org.mulgara.resolver.lucene.LuceneIndexerCache.java
License:Apache License
private void createIndex() throws IOException { IndexWriter writer = getWriter(); try {/*w w w . java 2 s. c om*/ writer.commit(); } catch (Throwable t) { writer.close(); throw (t instanceof IOException) ? (IOException) t : new IOException("Error creating new index", t); } returnWriter(writer, false); }
From source file:org.nabucco.adapter.lucene.impl.connector.ra.spi.LuceneIndexServiceImpl.java
License:Open Source License
/** * Delete previous indexed documents.//from w w w .ja v a2 s. c om * * @param document * the document * @param index * the index * @param writer * the index writer * * @throws IOException * when the documents cannot be deleted */ private void deletePreviousIndexedDocument(FulltextDocument document, String index, IndexWriter writer) throws IOException { SearchIndexExtension extension = this.mapping.getIndexExtension(index); if (extension == null || extension.getKey() == null || extension.getKey().getValue() == null) { logger.warning("No search index extension configured."); return; } String keyField = extension.getKey().getValue().getValue(); if (logger.isDebugEnabled()) { logger.info("Trying to delete existing index entry for key field [", keyField, "]."); } for (FulltextField field : document.getFieldList()) { if (field.getFieldName().getValue().equals(keyField)) { Term term; if (field.getFieldValue() == null) { term = new Term(keyField, ""); } else { term = new Term(keyField, field.getFieldValue().getValue()); } writer.deleteDocuments(term); if (logger.isDebugEnabled()) { logger.info("Deleting existing index entry [", field.getFieldValue().getValue(), "]."); } } } writer.commit(); }
From source file:org.neo4j.index.impl.lucene.legacy.WritableIndexReferenceFactoryTest.java
License:Open Source License
private void writeSomething(IndexReference indexReference) throws IOException { IndexWriter writer = indexReference.getWriter(); writer.addDocument(new Document()); writer.commit(); }
From source file:org.neo4j.index.lucene.repair.IndexHandler.java
License:Open Source License
public void deleteFieldFromNodeDocument(long nodeId, String fieldName) throws Exception { IndexReader reader = IndexReader.open(dir, false); Document newDoc = null;//from w w w. j a v a 2s . c o m IndexSearcher searcher = new IndexSearcher(reader); TopDocs searchResult = searcher.search(new TermQuery(new Term("_id_", Long.toString(nodeId))), 2); if (searchResult.totalHits > 1) { throw new IllegalStateException( "There should be only one hit for node id " + nodeId + ", i got at least 2"); } int docId = searchResult.scoreDocs[0].doc; Document original = reader.document(docId); newDoc = new Document(); for (Fieldable f : original.getFields()) { if (!f.name().equals(fieldName)) { newDoc.add(f); } } reader.deleteDocument(docId); reader.commit(null); reader.close(); IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig(Version.LUCENE_35, new WhitespaceAnalyzer(Version.LUCENE_35))); writer.addDocument(newDoc); writer.commit(); writer.close(); }
From source file:org.neo4j.kernel.api.impl.index.backup.LuceneIndexSnapshotFileIteratorTest.java
License:Open Source License
private static void insertRandomDocuments(IndexWriter writer) throws IOException { Document doc = new Document(); doc.add(new StringField("a", "b", Field.Store.YES)); doc.add(new StringField("c", "d", Field.Store.NO)); writer.addDocument(doc);//from w ww . j a v a2s . co m writer.commit(); }