There are several ways to implement it : Query as you mentioned. You'd need to implement a Scorer which traverses the posting list where the payload exists. The methods you should implement are nextDoc() and advance(). You'll also need to traverse DocsAndPositionsEnum.
A Filter. That's somewhat easier than a Query, I think. Principally it will work the same as Scorer. One benefit is that you can cache filters. So if it's common to search for a certain artist, you can cache the documents this artist belong to. Third option is to implement a Collector which filters documents before they are sent to whatever other collector aggregates the documents eg TopScoreDocCollector. Again, you'll need to traverse the posting list of the term that holds the payload, only this time you'll need to implement collect() and setNextReader(). Each has pros and cons. They all share the same con though - the payload doesn't help to drive the query. Ie, unlike what inverted indexes are meant for, this approach cannot tell fast which documents have artist:foo, rather you need to traverse all documents until you find one. I would perhaps give another thought to what's been proposed before, adding an artist and city fields to each document. Perhaps if you tell us more what you're trying to achieve in the end, we can help you structure your index better. Shai On Jun 20, 2013 8:12 PM, "michal samek" <samek.mic...@gmail.com> wrote: > Well, with this solution you won't be able to search for near occurences of > payloads - as with NearSpanQueries :-/ I just need to store some searchable > data with terms, not with documents. > > But why not implement totally new Query? I'm very new to Lucene, so I've > got no idea what it involves, how indices are structured, how searching is > implemented... Would it be possible? > > *Michal > * > > > 2013/6/20 Brendan Grainger <brendan.grain...@gmail.com> > > > Any reason not to have separate artist and city fields? So you would > search > > for: > > > > artist:(W. A. Mozart) city:Salzburg > > > > HTH > > Brendan > > > > > > On Thu, Jun 20, 2013 at 12:27 PM, michal samek <samek.mic...@gmail.com > > >wrote: > > > > > Hi Adrien, > > > > > > thanks for your reply. If payloads cannot be used for searching, is > there > > > any workaround how to achieve similar functionality? > > > > > > What I'd like to accomplish is to be able to search documents with > > contents > > > for example > > > "W. A. Mozart[artist] was born in Salzburg[city]" > > > just by specifying the *payload*s [artist] [city]. > > > > > > Thanks > > > > > > *Michal > > > * > > > > > > > > > 2013/6/20 Adrien Grand <jpou...@gmail.com> > > > > > > > Hi Michal, > > > > > > > > Although payloads can be used at query time to customize scoring, > they > > > > can't be used for searching. Lucene only allows to search on terms. > > > > > > > > -- > > > > Adrien > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > > > > For additional commands, e-mail: java-user-h...@lucene.apache.org > > > > > > > > > > > > > > > > > > > -- > > Brendan Grainger > > www.kuripai.com > > >