lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bob Price <rjpric...@gmail.com>
Subject problem with payload retrieval in custom query - lucene 5.3.1
Date Wed, 23 Dec 2015 18:30:20 GMT
Via elasticsearch 2.1 we have written a custom Lucene TokenFilter that adds
a payload to a special term during indexing analysis, and we also have
custom Lucene Query/Weight/Scorer classes that compare this payload against
some query data to decide if a document matches a query or not.

I know that the payloads are being written as desired since I can easily
see them via elasticsearch's termvector API.

However, while our Scorer can see all of the documents with this special
term, I can never get access to its payload.

The approach to doing this in the Scorer is simply:

docs = leafReaderContext.reader().postings(specialTerm, PostingsEnum.PAYLOADS);

Then, walking through the docs via nextDoc() and trying to retrieve each
doc's payload via:

BytesRef payloadRef = docs.getPayload();
if (payloadRef != null) {
   byte[] payload = payloadRef.bytes;

}

I have logging in place so that I see that every document I have in a test
index is being looked at, but for every document, the payloadRef comes back
null.

What am I doing wrong?  Is there some setting I need to enable somewhere to
allow the postings method to do what it says it can do?

Is there a better way to do this?

Any advice would be appreciated!

Bob

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message