Thanks a lot Mike! I still don't get any emails from the mailing list :( Note that I am new to docValues and tried to google examples to retrieve docValues from search results but I didn't find much info. I experimented with the below code using Lucene 6.2.1:
for (ScoreDoc scoreDoc : scoreDocs) { Document document = searcher.doc(scoreDoc.doc); resultDocs.add(document); // TODO: get docValues for the doc DirectoryReader reader = DirectoryReader.open(indexWriter.getDirectory()); List<LeafReaderContext> readerContexts = reader.getContext().leaves(); for (LeafReaderContext readerContext : readerContexts) { LeafReader leafReader = readerContext.reader(); NumericDocValues docValues = leafReader.getNumericDocValues(someDocValueField); if (docValues != null) { long docValue = docValues.get(scoreDoc.doc); } } } I have a numeric docValue field. From debugger I can see there are 4 leaves and hence 4 leafReaders and only the 4th reader seems to get the correct value for the target docId (and I'm not sure why 4 values here)? What did I miss/do wrong? Could you point me to the right direction (with examples) please? Many thanks, Joe On Tue, Jun 20, 2017 at 12:14 AM, Michael McCandless < luc...@mikemccandless.com> wrote: > In pure Lucene you could just pull the doc values for the docIDs in your > set of search results; MultiDocValues can be helpful sugar here, unless you > need SORTED or SORTED_SET in which case it's best to go per-segment. > > Or just track down where Solr does this and poach those sources. > > Mike McCandless > > http://blog.mikemccandless.com > > On Mon, Jun 19, 2017 at 11:50 AM, Joe Ye <yuanzhou...@gmail.com> wrote: > >> Thanks Mike! My colleague only forwarded Erick's Solr reply today as it >> seems I didn't get any emails and may have been taken off the mailing list >> for some reason? >> >> We're using Lucene core only (version 6.2.1 at the moment). So there's no >> link between the docValue and its associated stored field? Is there >> anything similar/equivalent to useDocValuesAsStored in Lucene core? >> We're trying to use docValues to avoid a full update (delete + create >> new)... Yet, we still need to retrieve the updated values. >> >> Regards, >> Joe >> >> On Mon, Jun 19, 2017 at 4:16 PM, Michael McCandless < >> luc...@mikemccandless.com> wrote: >> >>> Updating the doc value will not update the stored field (what >>> document.get returns). If you need to change stored fields you have to use >>> the IW.updateDocuments API, where the old document is deleted and a new >>> document is indexed, atomically (to refresh). >>> >>> But also see Erick's solr-specific response (to the list) a week ago. >>> >>> Mike McCandless >>> >>> http://blog.mikemccandless.com >>> >>> On Mon, Jun 19, 2017 at 5:41 AM, Joe Ye <yuanzhou...@gmail.com> wrote: >>> >>>> Hi, >>>> >>>> Could anyone help with my issue described below? If I'm not posting on >>>> the >>>> right mailing list please direct me to the correct one. >>>> >>>> Many thanks, >>>> Joe >>>> >>>> >>>> On Mon, Jun 12, 2017 at 3:05 PM, Joe Ye <yuanzhou...@gmail.com> wrote: >>>> >>>> > Hi, >>>> > >>>> > I have a few NumericDocValuesField fields and also added separate >>>> > StoredField fields to store the values so that I can access them in >>>> query >>>> > results. I used IndexWriter.updateNumericDocValue to update the >>>> value of >>>> > a DocValues field. Then I firstly called SearcherManager.maybeRefresh >>>> to >>>> > ensure SearcherManager.acquire will return refreshed instances and >>>> used DocValuesNumbersQuery >>>> > with the updated value. I did get the matching document in the query >>>> > result but when I tried to access its value using Document.get, it's >>>> still >>>> > the old value. It appears that updating the DocValues field doesn't >>>> update >>>> > its associated StoredField value. What do I miss here? >>>> > >>>> > >>>> > I would highly appreciate your help! >>>> > >>>> > >>>> > Regards, >>>> > >>>> > Joe >>>> > >>>> >>> >>> >> >