|
I've got the same issue while running kewords query against fields configured with stop words.
Can I suggest to use a strategy similar to ConnectedMultiFieldsPhraseQueryBuilder.createQuery(FieldContext):
[...]
final int size = termsPerPosition.size();
if ( size == 0 ) {
perFieldQuery = new BooleanQuery( );
}
else if ( size <= 1 ) {
[...]
Implementing a similar code into ConnectedMultiFieldsTermQueryBuilder.createQuery(FieldContext,ConversionContext) will return an empty query for an "empty after stopwords removal" keyword query.
From:
[...]
if ( terms.size() == 0 ) {
throw log.queryWithNoTermsAfterAnalysis( fieldContext.getField(), searchTerm );
}
[...]
To:
[...]
if ( terms.size() == 0 ) {
perFieldQuery = new BooleanQuery( );
log.warnf("The query string '%2$s' applied on field '%1$s' has no meaningfull tokens to be matched. " +
"Validate the query input against the Analyzer applied on this field.",
fieldContext.getField(),searchTerm);
}
[...]
|