[ https://issues.apache.org/jira/browse/LUCENE-1881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12750247#action_12750247 ]
Wai Wong commented on LUCENE-1881: ---------------------------------- I re-read the comments again. Seems that this is not addressed as a bug. We know that the non-stored fields are not retrievable, but they are searchable in the original db. However, after copying to the new index db, the same field is no longer searchable. We just confirmed that a simple copy without any modification also cannot retain the information. I can imagine maybe the information related to non-stored fields are not stored within the documents, but instead in some global area. I checked the document but could not get any hint where they are and how to copy them. Please point me to the right direction if possible. Thanks. > Non-stored fields are not copied in writer.addDocument()? > --------------------------------------------------------- > > Key: LUCENE-1881 > URL: https://issues.apache.org/jira/browse/LUCENE-1881 > Project: Lucene - Java > Issue Type: Bug > Components: Store > Affects Versions: 2.4.1 > Environment: Linux > Reporter: Wai Wong > Assignee: Hoss Man > Priority: Critical > > We would like to modified stored documents properties. The method is to use > IndexReader to open all files, modified some fields, and copy the document > via addDocument() of IndexWriter to another index. But all fields that are > created using Field.Store.NO are no longer available for searching. > Sample code in jsp is attached: > <%@ page language="java" > import="org.apache.lucene.analysis.standard.StandardAnalyzer;"%> > <%@ page language="java" import="org.apache.lucene.document.*;"%> > <%@ page language="java" import="org.apache.lucene.index.*;"%> > <%@ page language="java" import="org.apache.lucene.search.*;"%> > <%@ page contentType="text/html; charset=utf8" %> > <% > // create for testing > IndexWriter writer = new IndexWriter("/opt/wwwroot/351/Index/test", new > StandardAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED); > Document doc = new Document(); > doc.add(new Field("A", "1234", Field.Store.NO , > Field.Index.NOT_ANALYZED)); > doc.add(new Field("B", "abcd", Field.Store.NO , > Field.Index.NOT_ANALYZED)); > writer.addDocument(doc); > writer.close(); > // check ok > Query q = new TermQuery(new Term("A", "1234")); > Searcher s = new IndexSearcher("/opt/wwwroot/351/Index/test"); > Hits h = s.search(q); > out.println("# of document found is " + h.length()); // it is ok > // update the document to change or remove a field > IndexReader r = IndexReader.open("/opt/wwwroot/351/Index/test"); > doc = r.document(0); > r.deleteDocument(0); > r.close(); > doc.removeField("B"); > writer = new IndexWriter("/opt/wwwroot/351/Index/test1", new > StandardAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED); > writer.addDocument(doc); > writer.optimize(); > writer.close(); > // test again > s = new IndexSearcher("/opt/wwwroot/351/Index/test1"); > h = s.search(q); > out.println("<P># of document found is now " + h.length()); > r = IndexReader.open("/opt/wwwroot/351/Index/test1"); > out.println("<P> max Doc is " + r.maxDoc()); > %> -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org For additional commands, e-mail: java-dev-h...@lucene.apache.org