Merge r5985 from nihvivo-rel-1.1-maint: query string cleanup to prevent Lucene ParseExceptions
This commit is contained in:
parent
a83304b5b8
commit
b510f53e1c
2 changed files with 18 additions and 3 deletions
|
@ -282,12 +282,19 @@ public class AutocompleteController extends FreemarkerHttpServlet implements Sea
|
|||
// of wildcard and non-wildcard queries. The query will look have only an implicit disjunction
|
||||
// operator: e.g., +(name:tales name:tales*)
|
||||
try {
|
||||
Query query = parser.parse(querystr);
|
||||
// Prevent org.apache.lucene.queryParser.ParseException:
|
||||
// Cannot parse 'mary *': '*' or '?' not allowed as first character in WildcardQuery
|
||||
// The * is redundant in this case anyway, so just remove it.
|
||||
log.debug("Query string is '" + querystr + "'");
|
||||
querystr = querystr.replaceAll("([\\s^])[?*]", "$1");
|
||||
log.debug("Cleaned query string is '" + querystr + "'");
|
||||
|
||||
log.debug("Adding non-wildcard query for " + querystr);
|
||||
Query query = parser.parse(querystr);
|
||||
boolQuery.add(query, BooleanClause.Occur.SHOULD);
|
||||
|
||||
Query wildcardQuery = parser.parse(querystr + "*");
|
||||
log.debug("Adding wildcard query for " + querystr);
|
||||
Query wildcardQuery = parser.parse(querystr + "*");
|
||||
boolQuery.add(wildcardQuery, BooleanClause.Occur.SHOULD);
|
||||
|
||||
log.debug("Name query is: " + boolQuery.toString());
|
||||
|
|
|
@ -278,7 +278,7 @@ public class PagedSearchController extends VitroHttpServlet implements Searcher{
|
|||
|
||||
request.getRequestDispatcher(Controllers.BASIC_JSP).forward(request,response);
|
||||
} catch (Throwable e) {
|
||||
log.error("SearchController.doGet(): " + e);
|
||||
log.error("PagedSearchController.doGet(): " + e, e);
|
||||
doSearchError(request, response, e.getMessage(), null);
|
||||
return;
|
||||
}
|
||||
|
@ -440,6 +440,14 @@ public class PagedSearchController extends VitroHttpServlet implements Searcher{
|
|||
return null;
|
||||
}
|
||||
QueryParser parser = getQueryParser(analyzer);
|
||||
|
||||
// Prevent org.apache.lucene.queryParser.ParseException:
|
||||
// Cannot parse 'mary *': '*' or '?' not allowed as first character in WildcardQuery
|
||||
// The * is redundant in this case anyway, so just remove it.
|
||||
log.debug("Query string is '" + querystr + "'");
|
||||
querystr = querystr.replaceAll("([\\s^])[?*]", "$1");
|
||||
log.debug("Cleaned query string is '" + querystr + "'");
|
||||
|
||||
query = parser.parse(querystr);
|
||||
|
||||
String alpha = request.getParameter("alpha");
|
||||
|
|
Loading…
Add table
Reference in a new issue