[ 
https://issues.apache.org/jira/browse/LUCENE-6983?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15108622#comment-15108622
 ] 

uygar yuzsuren commented on LUCENE-6983:
----------------------------------------

I found a weird workaround (if it is a workaround at all, it is the expected 
behaviour actually:)).

I changed deleteDocument(Term) to deleteDocument(Query) and now it works fine. 
Now I am wondering what is the functional difference between 
deleteDocument(Term) and deleteDocument(Query). There is not any query argument 
for updateDocument(), therefore I had to call delete and add consecutively.

I doubt if there is a bug but these are unexpected behaviours for an intuitive 
developer though.   

QueryParser parser = new QueryParser("entityid", analyzer);
                                try {
                                        Query query = parser.parse("Company_" + 
newCompany.getId().toString());
                                        iwriter.deleteDocuments(query);
                                        iwriter.addDocument(doc);
                                } catch (ParseException e) {
                                        e.printStackTrace();
                                }



> IndexWriter.updateDocument on FSDirectory does not work Ver.5.4.0
> -----------------------------------------------------------------
>
>                 Key: LUCENE-6983
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6983
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: core/index
>    Affects Versions: 5.4
>         Environment: Windows 8, Java 1.8.0_60
>            Reporter: uygar yuzsuren
>
> I try to create a simple index and then update documents (with 
> IndexWriter.updateDocuments). When I use RAMDirectory it works fine 
> (IndexWriter.numDocs returns correct value, IndexSearcher.search returns 
> correct hits). However, when I use FSDirectory it creates duplicate 
> documents, and IndexSearcher returns multiple documents with same key field 
> values. Here is the code excerpt:
> //This code is in a thread and it updates documents with regular intervals, 
> say 1 min.
> Analyzer analyzer = new StandardAnalyzer();
> try {
> Path path = Paths.get(indexDirectory);
> Directory directory = FSDirectory.open(path);
> IndexWriterConfig config = new IndexWriterConfig(analyzer);
> IndexWriter iwriter = new IndexWriter(directory, config);
> System.out.println("Document count=" + iwriter.numDocs());
> for (Company newCompany : newCompanies)
> { Document doc = new Document(); doc.add(new Field("entityid", "Company" + 
> newCompany.getId().toString(), TextField.TYPE_STORED)); doc.add(new 
> Field("companyname", newCompany.getName(), TextField.TYPE_NOT_STORED)); Term 
> term = new Term("entityid", "Company" + newCompany.getId().toString()); 
> iwriter.updateDocument(term, doc);        }
> iwriter.flush();
> iwriter.commit();
> System.out.println("Document count2=" + iwriter.numDocs());
> iwriter.close();
> } catch (IOException e1)
> { e1.printStackTrace(); }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to