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

Grant Ingersoll commented on LUCENE-1001:
-----------------------------------------

{quote}
public interface PayloadSpans extends Spans { // as above }
{quote}

I think this is problematic too, unfortunately, since many spans actually 
contain other spans, so there is no way to safely cast even in the internal 
implementations.

Alternative might be to add SpanQuery.getPayloadSpans() but that is ugly, too.

I wish there was an equivalent way to deprecated that allowed one to tell 
people new methods are coming, but that won't break the existing interface.  
Semantics of it would need to be figured out, but it would be useful here to 
just be able to let people know that we want to add to the Spans interface, but 
they just get a warning when compiling until we make it official.

I suppose the right thing to do if we really want this to work is to deprecate 
Spans and SpanQuery.getSpans() and introduce a new form of Spans (maybe as an 
abstract class this time?)

Or am I missing something that provides a clearer way of doing this?

> Add Payload retrieval to Spans
> ------------------------------
>
>                 Key: LUCENE-1001
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1001
>             Project: Lucene - Java
>          Issue Type: New Feature
>          Components: Search
>            Reporter: Grant Ingersoll
>            Assignee: Grant Ingersoll
>            Priority: Minor
>
> It will be nice to have access to payloads when doing SpanQuerys.
> See http://www.gossamer-threads.com/lists/lucene/java-dev/52270 and 
> http://www.gossamer-threads.com/lists/lucene/java-dev/51134
> Current API, added to Spans.java is below.  I will try to post a patch as 
> soon as I can figure out how to make it work for unordered spans (I believe I 
> have all the other cases working).
> {noformat}
>  /**
>    * Returns the payload data for the current span.
>    * This is invalid until [EMAIL PROTECTED] #next()} is called for
>    * the first time.
>    * This method must not be called more than once after each call
>    * of [EMAIL PROTECTED] #next()}. However, payloads are loaded lazily,
>    * so if the payload data for the current position is not needed,
>    * this method may not be called at all for performance reasons.<br>
>    * <br>
>    * <p><font color="#FF0000">
>    * WARNING: The status of the <b>Payloads</b> feature is experimental.
>    * The APIs introduced here might change in the future and will not be
>    * supported anymore in such a case.</font>
>    *
>    * @return a List of byte arrays containing the data of this payload
>    * @throws IOException
>    */
>   // TODO: Remove warning after API has been finalized
>   List/*<byte[]>*/ getPayload() throws IOException;
>   /**
>    * Checks if a payload can be loaded at this position.
>    * <p/>
>    * Payloads can only be loaded once per call to
>    * [EMAIL PROTECTED] #next()}.
>    * <p/>
>    * <p><font color="#FF0000">
>    * WARNING: The status of the <b>Payloads</b> feature is experimental.
>    * The APIs introduced here might change in the future and will not be
>    * supported anymore in such a case.</font>
>    *
>    * @return true if there is a payload available at this position that can 
> be loaded
>    */
>   // TODO: Remove warning after API has been finalized
>   public boolean isPayloadAvailable();
> {noformat}

-- 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to