Lucene: Prohibit searching empty string over a full-text field
org.apache.lucene.util.QueryBuilder returns a null query when given an empty string to tokenize (see line 245). We can detect this case earlier in the query building process and return a readable error to the user. This may not be the only way that QueryBuilder can return a null query, so add a null check in LuceneChangeIndex so the resulting stack trace is less obtuse. Change-Id: Icf9a1ab50881d61ae4400a34cc2ce7e2a78e1162
This commit is contained in:
		@@ -242,8 +242,14 @@ public class QueryBuilder {
 | 
			
		||||
    return new PrefixQuery(new Term(p.getField().getName(), p.getValue()));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private Query fullTextQuery(IndexPredicate<ChangeData> p) {
 | 
			
		||||
    return queryBuilder.createPhraseQuery(p.getField().getName(), p.getValue());
 | 
			
		||||
  private Query fullTextQuery(IndexPredicate<ChangeData> p)
 | 
			
		||||
      throws QueryParseException {
 | 
			
		||||
    String value = p.getValue();
 | 
			
		||||
    if (value == null) {
 | 
			
		||||
      throw new QueryParseException(
 | 
			
		||||
          "Full-text search over empty string not supported");
 | 
			
		||||
    }
 | 
			
		||||
    return queryBuilder.createPhraseQuery(p.getField().getName(), value);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public int toIndexTimeInMinutes(Date ts) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user