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

Robert Muir commented on LUCENE-7960:
-------------------------------------

my biggest concern is that these filters would then have two ctors:

* NGramTokenFilter(TokenStream)
* NGramTokenFilter(TokenStream, int, int, boolean, boolean)

The no-arg one starts looking more attractive to users at this point, and its 
mega-trappy (n=1,2)!!!!!!! That's the ctor that should be deprecated :)

In general I'll be honest, I don't like how trappy the apis are with these 
filters/tokenizers because of defaults like that. I also think its trappy they 
take a min and a max at all, because that's really creating (max-min) indexed 
fields all unioned into one. There aren't even any warnings about this. 

I haven't reviewed what the booleans of the patch does, but I am concerned that 
the use case may just be "keep original" which could be one boolean, or perhaps 
done in a different way entirely (e.g. KeywordRepeatFilter or perhaps something 
like LUCENE-8273). So if its acceptable to collapse it into one boolean that 
does that, I think that would be easier.

I feel like any defaults that our apis lead to (and when you have multiple 
ctors, then thats a default) should be something that will perform and scale 
well and work for the general case. For example n=4 has been shown to work well 
in many relevance experiments. At least we should make it easy for you to 
explicitly ask for something like that without passing many parameters.


> NGram filters -- add option to keep short terms
> -----------------------------------------------
>
>                 Key: LUCENE-7960
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7960
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: modules/analysis
>            Reporter: Shawn Heisey
>            Priority: Major
>         Attachments: LUCENE-7960.patch, LUCENE-7960.patch
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> When ngram or edgengram filters are used, any terms that are shorter than the 
> minGramSize are completely removed from the token stream.
> This is probably 100% what was intended, but I've seen it cause a lot of 
> problems for users.  I am not suggesting that the default behavior be 
> changed.  That would be far too disruptive to the existing user base.
> I do think there should be a new boolean option, with a name like 
> keepShortTerms, that defaults to false, to allow the short terms to be 
> preserved.



--
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