diff --git a/src/main/java/org/codelibs/fess/helper/QueryHelper.java b/src/main/java/org/codelibs/fess/helper/QueryHelper.java index 0b6f1aeda..55ad15de0 100644 --- a/src/main/java/org/codelibs/fess/helper/QueryHelper.java +++ b/src/main/java/org/codelibs/fess/helper/QueryHelper.java @@ -511,17 +511,21 @@ public class QueryHelper { final String field = getSearchField(context, prefixQuery.getField()); if (Constants.DEFAULT_FIELD.equals(field)) { context.addFieldLog(field, prefixQuery.getPrefix().text()); - return buildDefaultQueryBuilder((f, b) -> QueryBuilders.prefixQuery(f, toLowercaseWildcard(prefixQuery.getPrefix().text())) - .boost(b * boost)); + return buildDefaultQueryBuilder((f, b) -> QueryBuilders.matchPhrasePrefixQuery(f, + toLowercaseWildcard(prefixQuery.getPrefix().text())).boost(b * boost)); } else if (isSearchField(field)) { context.addFieldLog(field, prefixQuery.getPrefix().text()); - return QueryBuilders.prefixQuery(field, toLowercaseWildcard(prefixQuery.getPrefix().text())).boost(boost); + if (notAnalyzedFieldSet.contains(field)) { + return QueryBuilders.prefixQuery(field, toLowercaseWildcard(prefixQuery.getPrefix().text())).boost(boost); + } else { + return QueryBuilders.matchPhrasePrefixQuery(field, toLowercaseWildcard(prefixQuery.getPrefix().text())).boost(boost); + } } else { final String query = prefixQuery.getPrefix().toString(); final String origQuery = toLowercaseWildcard(query); context.addFieldLog(Constants.DEFAULT_FIELD, query); context.addHighlightedQuery(origQuery); - return buildDefaultQueryBuilder((f, b) -> QueryBuilders.prefixQuery(f, origQuery).boost(b * boost)); + return buildDefaultQueryBuilder((f, b) -> QueryBuilders.matchPhrasePrefixQuery(f, origQuery).boost(b * boost)); } }