|
@@ -142,22 +142,24 @@ public class QueryHelper implements Serializable {
|
|
@PostConstruct
|
|
@PostConstruct
|
|
public void init() {
|
|
public void init() {
|
|
if (responseFields == null) {
|
|
if (responseFields == null) {
|
|
- responseFields = new String[] { SCORE_FIELD, fessConfig.getIndexFieldId(), fessConfig.getIndexFieldDocId(),
|
|
|
|
- fessConfig.getIndexFieldBoost(), fessConfig.getIndexFieldContentLength(), fessConfig.getIndexFieldHost(),
|
|
|
|
- fessConfig.getIndexFieldSite(), fessConfig.getIndexFieldLastModified(), fessConfig.getIndexFieldTimestamp(),
|
|
|
|
- fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(), fessConfig.getIndexFieldCreated(),
|
|
|
|
- fessConfig.getIndexFieldTitle(), fessConfig.getIndexFieldDigest(), fessConfig.getIndexFieldUrl(),
|
|
|
|
- fessConfig.getIndexFieldClickCount(), fessConfig.getIndexFieldFavoriteCount(), fessConfig.getIndexFieldConfigId(),
|
|
|
|
- fessConfig.getIndexFieldLang(), fessConfig.getIndexFieldHasCache() };
|
|
|
|
|
|
+ responseFields =
|
|
|
|
+ new String[] { SCORE_FIELD, fessConfig.getIndexFieldId(), fessConfig.getIndexFieldDocId(),
|
|
|
|
+ fessConfig.getIndexFieldBoost(), fessConfig.getIndexFieldContentLength(), fessConfig.getIndexFieldHost(),
|
|
|
|
+ fessConfig.getIndexFieldSite(), fessConfig.getIndexFieldLastModified(), fessConfig.getIndexFieldTimestamp(),
|
|
|
|
+ fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(), fessConfig.getIndexFieldCreated(),
|
|
|
|
+ fessConfig.getIndexFieldTitle(), fessConfig.getIndexFieldDigest(), fessConfig.getIndexFieldUrl(),
|
|
|
|
+ fessConfig.getIndexFieldClickCount(), fessConfig.getIndexFieldFavoriteCount(),
|
|
|
|
+ fessConfig.getIndexFieldConfigId(), fessConfig.getIndexFieldLang(), fessConfig.getIndexFieldHasCache() };
|
|
}
|
|
}
|
|
if (cacheResponseFields == null) {
|
|
if (cacheResponseFields == null) {
|
|
- cacheResponseFields = new String[] { SCORE_FIELD, fessConfig.getIndexFieldId(), fessConfig.getIndexFieldDocId(),
|
|
|
|
- fessConfig.getIndexFieldBoost(), fessConfig.getIndexFieldContentLength(), fessConfig.getIndexFieldHost(),
|
|
|
|
- fessConfig.getIndexFieldSite(), fessConfig.getIndexFieldLastModified(), fessConfig.getIndexFieldTimestamp(),
|
|
|
|
- fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(), fessConfig.getIndexFieldCreated(),
|
|
|
|
- fessConfig.getIndexFieldTitle(), fessConfig.getIndexFieldDigest(), fessConfig.getIndexFieldUrl(),
|
|
|
|
- fessConfig.getIndexFieldClickCount(), fessConfig.getIndexFieldFavoriteCount(), fessConfig.getIndexFieldConfigId(),
|
|
|
|
- fessConfig.getIndexFieldLang(), fessConfig.getIndexFieldCache() };
|
|
|
|
|
|
+ cacheResponseFields =
|
|
|
|
+ new String[] { SCORE_FIELD, fessConfig.getIndexFieldId(), fessConfig.getIndexFieldDocId(),
|
|
|
|
+ fessConfig.getIndexFieldBoost(), fessConfig.getIndexFieldContentLength(), fessConfig.getIndexFieldHost(),
|
|
|
|
+ fessConfig.getIndexFieldSite(), fessConfig.getIndexFieldLastModified(), fessConfig.getIndexFieldTimestamp(),
|
|
|
|
+ fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(), fessConfig.getIndexFieldCreated(),
|
|
|
|
+ fessConfig.getIndexFieldTitle(), fessConfig.getIndexFieldDigest(), fessConfig.getIndexFieldUrl(),
|
|
|
|
+ fessConfig.getIndexFieldClickCount(), fessConfig.getIndexFieldFavoriteCount(),
|
|
|
|
+ fessConfig.getIndexFieldConfigId(), fessConfig.getIndexFieldLang(), fessConfig.getIndexFieldCache() };
|
|
}
|
|
}
|
|
if (responseDocValuesFields == null) {
|
|
if (responseDocValuesFields == null) {
|
|
responseDocValuesFields = new String[] { fessConfig.getIndexFieldClickCount(), fessConfig.getIndexFieldFavoriteCount() };
|
|
responseDocValuesFields = new String[] { fessConfig.getIndexFieldClickCount(), fessConfig.getIndexFieldFavoriteCount() };
|
|
@@ -166,31 +168,35 @@ public class QueryHelper implements Serializable {
|
|
highlightedFields = new String[] { fessConfig.getIndexFieldContent() };
|
|
highlightedFields = new String[] { fessConfig.getIndexFieldContent() };
|
|
}
|
|
}
|
|
if (searchFields == null) {
|
|
if (searchFields == null) {
|
|
- searchFields = new String[] { INURL_FIELD, fessConfig.getIndexFieldUrl(), fessConfig.getIndexFieldDocId(),
|
|
|
|
- fessConfig.getIndexFieldHost(), fessConfig.getIndexFieldTitle(), fessConfig.getIndexFieldContent(),
|
|
|
|
- fessConfig.getIndexFieldContentLength(), fessConfig.getIndexFieldLastModified(), fessConfig.getIndexFieldTimestamp(),
|
|
|
|
- fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(), fessConfig.getIndexFieldLabel(),
|
|
|
|
- fessConfig.getIndexFieldSegment(), fessConfig.getIndexFieldClickCount(), fessConfig.getIndexFieldFavoriteCount(),
|
|
|
|
- fessConfig.getIndexFieldLang() };
|
|
|
|
|
|
+ searchFields =
|
|
|
|
+ new String[] { INURL_FIELD, fessConfig.getIndexFieldUrl(), fessConfig.getIndexFieldDocId(),
|
|
|
|
+ fessConfig.getIndexFieldHost(), fessConfig.getIndexFieldTitle(), fessConfig.getIndexFieldContent(),
|
|
|
|
+ fessConfig.getIndexFieldContentLength(), fessConfig.getIndexFieldLastModified(),
|
|
|
|
+ fessConfig.getIndexFieldTimestamp(), fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(),
|
|
|
|
+ fessConfig.getIndexFieldLabel(), fessConfig.getIndexFieldSegment(), fessConfig.getIndexFieldClickCount(),
|
|
|
|
+ fessConfig.getIndexFieldFavoriteCount(), fessConfig.getIndexFieldLang() };
|
|
}
|
|
}
|
|
if (facetFields == null) {
|
|
if (facetFields == null) {
|
|
- facetFields = new String[] { fessConfig.getIndexFieldUrl(), fessConfig.getIndexFieldHost(), fessConfig.getIndexFieldTitle(),
|
|
|
|
- fessConfig.getIndexFieldContent(), fessConfig.getIndexFieldContentLength(), fessConfig.getIndexFieldLastModified(),
|
|
|
|
- fessConfig.getIndexFieldTimestamp(), fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(),
|
|
|
|
- fessConfig.getIndexFieldLabel(), fessConfig.getIndexFieldSegment() };
|
|
|
|
|
|
+ facetFields =
|
|
|
|
+ new String[] { fessConfig.getIndexFieldUrl(), fessConfig.getIndexFieldHost(), fessConfig.getIndexFieldTitle(),
|
|
|
|
+ fessConfig.getIndexFieldContent(), fessConfig.getIndexFieldContentLength(),
|
|
|
|
+ fessConfig.getIndexFieldLastModified(), fessConfig.getIndexFieldTimestamp(),
|
|
|
|
+ fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(), fessConfig.getIndexFieldLabel(),
|
|
|
|
+ fessConfig.getIndexFieldSegment() };
|
|
}
|
|
}
|
|
if (supportedSortFields == null) {
|
|
if (supportedSortFields == null) {
|
|
- supportedSortFields = new String[] { fessConfig.getIndexFieldCreated(), fessConfig.getIndexFieldContentLength(),
|
|
|
|
- fessConfig.getIndexFieldLastModified(), fessConfig.getIndexFieldTimestamp(), fessConfig.getIndexFieldClickCount(),
|
|
|
|
- fessConfig.getIndexFieldFavoriteCount() };
|
|
|
|
|
|
+ supportedSortFields =
|
|
|
|
+ new String[] { fessConfig.getIndexFieldCreated(), fessConfig.getIndexFieldContentLength(),
|
|
|
|
+ fessConfig.getIndexFieldLastModified(), fessConfig.getIndexFieldTimestamp(),
|
|
|
|
+ fessConfig.getIndexFieldClickCount(), fessConfig.getIndexFieldFavoriteCount() };
|
|
}
|
|
}
|
|
if (apiResponseFieldSet == null) {
|
|
if (apiResponseFieldSet == null) {
|
|
- setApiResponseFields(
|
|
|
|
- new String[] { "urlLink", "contentDescription", fessConfig.getIndexFieldId(), fessConfig.getIndexFieldDocId(),
|
|
|
|
- fessConfig.getIndexFieldBoost(), fessConfig.getIndexFieldContentLength(), fessConfig.getIndexFieldHost(),
|
|
|
|
- fessConfig.getIndexFieldSite(), fessConfig.getIndexFieldLastModified(), fessConfig.getIndexFieldTimestamp(),
|
|
|
|
- fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(), fessConfig.getIndexFieldCreated(),
|
|
|
|
- fessConfig.getIndexFieldTitle(), fessConfig.getIndexFieldDigest(), fessConfig.getIndexFieldUrl() });
|
|
|
|
|
|
+ setApiResponseFields(new String[] { "urlLink", "contentDescription", fessConfig.getIndexFieldId(),
|
|
|
|
+ fessConfig.getIndexFieldDocId(), fessConfig.getIndexFieldBoost(), fessConfig.getIndexFieldContentLength(),
|
|
|
|
+ fessConfig.getIndexFieldHost(), fessConfig.getIndexFieldSite(), fessConfig.getIndexFieldLastModified(),
|
|
|
|
+ fessConfig.getIndexFieldTimestamp(), fessConfig.getIndexFieldMimetype(), fessConfig.getIndexFieldFiletype(),
|
|
|
|
+ fessConfig.getIndexFieldCreated(), fessConfig.getIndexFieldTitle(), fessConfig.getIndexFieldDigest(),
|
|
|
|
+ fessConfig.getIndexFieldUrl() });
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -341,8 +347,8 @@ public class QueryHelper implements Serializable {
|
|
// TODO fuzzy value
|
|
// TODO fuzzy value
|
|
if (Constants.DEFAULT_FIELD.equals(field)) {
|
|
if (Constants.DEFAULT_FIELD.equals(field)) {
|
|
context.addFieldLog(field, term.text());
|
|
context.addFieldLog(field, term.text());
|
|
- return buildDefaultQueryBuilder(
|
|
|
|
- (f, b) -> QueryBuilders.fuzzyQuery(f, term.text()).fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits())).boost(b));
|
|
|
|
|
|
+ return buildDefaultQueryBuilder((f, b) -> QueryBuilders.fuzzyQuery(f, term.text())
|
|
|
|
+ .fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits())).boost(b));
|
|
} else if (isSearchField(field)) {
|
|
} else if (isSearchField(field)) {
|
|
context.addFieldLog(field, term.text());
|
|
context.addFieldLog(field, term.text());
|
|
return QueryBuilders.fuzzyQuery(field, term.text()).boost(fuzzyQuery.getBoost())
|
|
return QueryBuilders.fuzzyQuery(field, term.text()).boost(fuzzyQuery.getBoost())
|
|
@@ -351,8 +357,8 @@ public class QueryHelper implements Serializable {
|
|
final String origQuery = fuzzyQuery.toString();
|
|
final String origQuery = fuzzyQuery.toString();
|
|
context.addFieldLog(Constants.DEFAULT_FIELD, origQuery);
|
|
context.addFieldLog(Constants.DEFAULT_FIELD, origQuery);
|
|
context.addHighlightedQuery(origQuery);
|
|
context.addHighlightedQuery(origQuery);
|
|
- return buildDefaultQueryBuilder(
|
|
|
|
- (f, b) -> QueryBuilders.fuzzyQuery(f, origQuery).fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits())).boost(b));
|
|
|
|
|
|
+ return buildDefaultQueryBuilder((f, b) -> QueryBuilders.fuzzyQuery(f, origQuery)
|
|
|
|
+ .fuzziness(Fuzziness.fromEdits(fuzzyQuery.getMaxEdits())).boost(b));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -397,23 +403,20 @@ public class QueryHelper implements Serializable {
|
|
} else if ("sort".equals(field)) {
|
|
} else if ("sort".equals(field)) {
|
|
final String[] values = text.split("\\.");
|
|
final String[] values = text.split("\\.");
|
|
if (values.length > 2) {
|
|
if (values.length > 2) {
|
|
- throw new InvalidQueryException(
|
|
|
|
- messages -> messages.addErrorsInvalidQuerySortValue(ActionMessages.GLOBAL_PROPERTY_KEY, text),
|
|
|
|
- "Invalid sort field: " + termQuery);
|
|
|
|
|
|
+ throw new InvalidQueryException(messages -> messages.addErrorsInvalidQuerySortValue(ActionMessages.GLOBAL_PROPERTY_KEY,
|
|
|
|
+ text), "Invalid sort field: " + termQuery);
|
|
}
|
|
}
|
|
final String sortField = values[0];
|
|
final String sortField = values[0];
|
|
if (!isSortField(sortField)) {
|
|
if (!isSortField(sortField)) {
|
|
- throw new InvalidQueryException(
|
|
|
|
- messages -> messages.addErrorsInvalidQueryUnsupportedSortField(ActionMessages.GLOBAL_PROPERTY_KEY, sortField),
|
|
|
|
- "Unsupported sort field: " + termQuery);
|
|
|
|
|
|
+ throw new InvalidQueryException(messages -> messages.addErrorsInvalidQueryUnsupportedSortField(
|
|
|
|
+ ActionMessages.GLOBAL_PROPERTY_KEY, sortField), "Unsupported sort field: " + termQuery);
|
|
}
|
|
}
|
|
SortOrder sortOrder;
|
|
SortOrder sortOrder;
|
|
if (values.length == 2) {
|
|
if (values.length == 2) {
|
|
sortOrder = SortOrder.valueOf(values[1]);
|
|
sortOrder = SortOrder.valueOf(values[1]);
|
|
if (sortOrder == null) {
|
|
if (sortOrder == null) {
|
|
- throw new InvalidQueryException(
|
|
|
|
- messages -> messages.addErrorsInvalidQueryUnsupportedSortOrder(ActionMessages.GLOBAL_PROPERTY_KEY, values[1]),
|
|
|
|
- "Invalid sort order: " + termQuery);
|
|
|
|
|
|
+ throw new InvalidQueryException(messages -> messages.addErrorsInvalidQueryUnsupportedSortOrder(
|
|
|
|
+ ActionMessages.GLOBAL_PROPERTY_KEY, values[1]), "Invalid sort order: " + termQuery);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
sortOrder = SortOrder.ASC;
|
|
sortOrder = SortOrder.ASC;
|
|
@@ -451,14 +454,17 @@ public class QueryHelper implements Serializable {
|
|
final QueryBuilder contentQuery =
|
|
final QueryBuilder contentQuery =
|
|
builder.apply(fessConfig.getIndexFieldContent(), fessConfig.getQueryBoostContentAsDecimal().floatValue());
|
|
builder.apply(fessConfig.getIndexFieldContent(), fessConfig.getQueryBoostContentAsDecimal().floatValue());
|
|
boolQuery.should(contentQuery);
|
|
boolQuery.should(contentQuery);
|
|
- getQueryLanguage().ifPresent(lang -> {
|
|
|
|
- final QueryBuilder titleLangQuery =
|
|
|
|
- builder.apply(fessConfig.getIndexFieldTitle() + "_" + lang, fessConfig.getQueryBoostTitleLangAsDecimal().floatValue());
|
|
|
|
- boolQuery.should(titleLangQuery);
|
|
|
|
- final QueryBuilder contentLangQuery = builder.apply(fessConfig.getIndexFieldContent() + "_" + lang,
|
|
|
|
- fessConfig.getQueryBoostContentLangAsDecimal().floatValue());
|
|
|
|
- boolQuery.should(contentLangQuery);
|
|
|
|
- });
|
|
|
|
|
|
+ getQueryLanguage().ifPresent(
|
|
|
|
+ lang -> {
|
|
|
|
+ final QueryBuilder titleLangQuery =
|
|
|
|
+ builder.apply(fessConfig.getIndexFieldTitle() + "_" + lang, fessConfig.getQueryBoostTitleLangAsDecimal()
|
|
|
|
+ .floatValue());
|
|
|
|
+ boolQuery.should(titleLangQuery);
|
|
|
|
+ final QueryBuilder contentLangQuery =
|
|
|
|
+ builder.apply(fessConfig.getIndexFieldContent() + "_" + lang, fessConfig.getQueryBoostContentLangAsDecimal()
|
|
|
|
+ .floatValue());
|
|
|
|
+ boolQuery.should(contentLangQuery);
|
|
|
|
+ });
|
|
return boolQuery;
|
|
return boolQuery;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -711,8 +717,7 @@ public class QueryHelper implements Serializable {
|
|
if (defaultSortBuilders != null) {
|
|
if (defaultSortBuilders != null) {
|
|
StreamUtil.of(defaultSortBuilders).forEach(builder -> list.add(builder));
|
|
StreamUtil.of(defaultSortBuilders).forEach(builder -> list.add(builder));
|
|
}
|
|
}
|
|
- list.add(
|
|
|
|
- SortBuilders.fieldSort(fieldName).order(SortOrder.ASC.toString().equalsIgnoreCase(order) ? SortOrder.ASC : SortOrder.DESC));
|
|
|
|
|
|
+ list.add(SortBuilders.fieldSort(fieldName).order(SortOrder.ASC.toString().equalsIgnoreCase(order) ? SortOrder.ASC : SortOrder.DESC));
|
|
defaultSortBuilders = list.toArray(new SortBuilder[list.size()]);
|
|
defaultSortBuilders = list.toArray(new SortBuilder[list.size()]);
|
|
}
|
|
}
|
|
|
|
|