This looks like a bug - can you open a JIRA ticket?

Alan Woodward
www.flax.co.uk


On 13 May 2016, at 22:33, Daniel Bigham wrote:

> I am experimenting with supporting synonyms on the query side by doing query 
> expansion.
> 
> For example, the query "open webpage" can be expanded if the following things 
> are synonyms:
> 
> "open" | "go to"
> 
> This becomes the following: (I'm using both the stop word filter and the 
> stemming filter)
> 
> spanNear(
>        [
>                spanOr([Title:open, Title:go]),
>                Title:webpag
>        ],
>        0,
>        true
> )
> 
> Notice that "go to" became just "go", because apparently "to" is removed by 
> the stop word filter.
> 
> Interestingly, if you turn "go to webpage" into a phrase, you get "go ? 
> webpage", but if you turn "go to" into a phrase, you just get "go", because 
> apparently a trailing stop word in a PhraseQuery gets dropped. (there would 
> actually be no way to represent the gap currently because it represents gaps 
> implicitly via the position of the phrase tokens, and if there is no second 
> token, there's no way to implicitly indicate that there is a gap there)
> 
> The above query then fails to match "go to webpage", because "go to webpage" 
> in the index tokenizes as "go _ webpage", and the query, because it lost its 
> gap, tried to only match "go webpage".
> 
> To try and work around that, I represent "go to" not as a phrase, but as a 
> SpanNearQuery, like this:
> 
> spanNear(
>        [
>                spanOr(
>                        [
>                                Title:open,
>                                spanNear([Title:go, SpanGap(:1)], 0, true),
>                        ]
>                ),
>                Title:webpag
>        ],
>        0,
>        true
> )
> 
> However, when I run that query, I get the following:
> 
> A Java exception occurred: java.lang.UnsupportedOperationException
>    at 
> org.apache.lucene.search.spans.SpanNearQuery$GapSpans.positionsCost(SpanNearQuery.java:398)
>    at 
> org.apache.lucene.search.spans.ConjunctionSpans.asTwoPhaseIterator(ConjunctionSpans.java:96)
>    at 
> org.apache.lucene.search.spans.NearSpansOrdered.asTwoPhaseIterator(NearSpansOrdered.java:45)
>    at 
> org.apache.lucene.search.spans.ScoringWrapperSpans.asTwoPhaseIterator(ScoringWrapperSpans.java:88)
>    at 
> org.apache.lucene.search.ConjunctionDISI.addSpans(ConjunctionDISI.java:104)
>    at 
> org.apache.lucene.search.ConjunctionDISI.intersectSpans(ConjunctionDISI.java:82)
>    at 
> org.apache.lucene.search.spans.ConjunctionSpans.<init>(ConjunctionSpans.java:41)
>    at 
> org.apache.lucene.search.spans.NearSpansOrdered.<init>(NearSpansOrdered.java:54)
>    at 
> org.apache.lucene.search.spans.SpanNearQuery$SpanNearWeight.getSpans(SpanNearQuery.java:232)
>    at org.apache.lucene.search.spans.SpanWeight.scorer(SpanWeight.java:134)
>    at org.apache.lucene.search.spans.SpanWeight.scorer(SpanWeight.java:38)
>    at org.apache.lucene.search.Weight.bulkScorer(Weight.java:135)
> 
> ... and when I look up that GapSpans class in SpanNearQuery.java, I see:
> 
> @Override
> public float positionsCost() {
>  throw new UnsupportedOperationException();
> }
> 
> Does this UnsupportedOperationException imply that "we haven't implemented 
> that yet"?  Or does it imply "you're doing something wrong"?
> 
> If I'm doing something wrong, any idea what it might be?
> 
> Thanks,
> Daniel
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-user-h...@lucene.apache.org
> 

Reply via email to