I implement a small code for the purpose of extracting some keywords out of Lucene index. I did implement that using search component. My problem is when I tried to update Lucene IndexWriter, Solr index which is placed on top of that, does not affect. As you can see I did the commit part.
BooleanQuery query = new BooleanQuery(); for (String fieldName : keywordSourceFields) { TermQuery termQuery = new TermQuery(new Term(fieldName,"N/A")); query.add(termQuery, Occur.MUST_NOT); } TermQuery termQuery=new TermQuery(new Term(keywordField, "N/A")); query.add(termQuery, Occur.MUST); try { //Query q= new QueryParser(keywordField, new StandardAnalyzer()).parse(query.toString()); TopDocs results = searcher.search(query, maxNumDocs); ScoreDoc[] hits = results.scoreDocs; IndexWriter writer = getLuceneIndexWriter(searcher.getPath()); for (int i = 0; i < hits.length; i++) { Document document = searcher.doc(hits[i].doc); List<String> keywords = keyword.getKeywords(hits[i].doc); if(keywords.size()>0) document.removeFields(keywordField); for (String word : keywords) { document.add(new StringField(keywordField, word, Field.Store.YES)); } String uniqueKey = searcher.getSchema().getUniqueKeyField().getName(); writer.updateDocument(new Term(uniqueKey, document.get(uniqueKey)), document); } writer.commit(); writer.forceMerge(1); writer.close(); } catch (IOException | SyntaxError e) { throw new RuntimeException(); } Please help me through solving this problem. -- A.Nazemian