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

Alan Woodward commented on LUCENE-8717:
---------------------------------------

{{StopFilter}} extends {{FilteringTokenFilter}} so it will handle things in the 
same way.  I've gone back and forth a bit on whether we should use 
{{TermDeletedAttribute}} all the time, or whether we can restrict it to just 
articulation points, but I think we should probably do the latter.  
Articulation points will only appear in token graphs, and there are a whole 
bunch of token filters that don't really make sense in that context, so with 
this change we only need to update a few filters; if we extend it so that 
everything needs to understand TermDeletedAttribute then there are a whole 
bunch of filters that we need to update (for example, all the 
summarizing/hashing filters - do we include deleted terms or not here?)

For synonyms, this still doesn't quite work because of the way SynonymMap 
builds itself, but I think cutting SynonymGraphFilter over to use 
GraphTokenFilter will make it a lot easier to match multi-token inputs with 
stopwords.  That would be a separate issue though.

> Handle stop words that appear at articulation points
> ----------------------------------------------------
>
>                 Key: LUCENE-8717
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8717
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Alan Woodward
>            Assignee: Alan Woodward
>            Priority: Major
>         Attachments: LUCENE-8717.patch, LUCENE-8717.patch
>
>
> Our set of TokenFilters currently cannot handle the case where a multi-term 
> synonym starts with a stopword.  This means that given a synonym file 
> containing the mapping "the walking dead => twd" and a standard english 
> stopword filter, QueryBuilder will produce incorrect queries.
> The tricky part here is that our standard way of dealing with stopwords, 
> which is to just remove them entirely from the token stream and use a larger 
> position increment on subsequent tokens, doesn't work when the removed token 
> also has a position length greater than 1.  There are various tricks you can 
> do to increment position length on the previous token, but this doesn't work 
> if the stopword is the first token in the token stream, or if there are 
> multiple stopwords in the side path.
> Instead, I'd like to propose adding a new TermDeletedAttribute, which we only 
> use on tokens that should be removed from the stream but which hold necessary 
> information about the structure of the token graph.  These tokens can then be 
> removed by GraphTokenStreamFiniteStrings at query time, and by 
> FlattenGraphFilter at index time.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to