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

Reply via email to