提交 1efa8fb7 作者: yanxin

性能优化,查询列表时不查询正文字段

上级 8fa3ba95
......@@ -151,6 +151,9 @@ public class KnowledgeUserController {
if(loginUser == null){
return Result.error("用户未登录!");
}
if("0".equals(knowledgeParam.getKnowledgeProjectId())){
knowledgeParam.setKnowledgeProjectId(null);
}
knowledgeParam.setKbKnowledgeId(Constants.SC_USER);
knowledgeParam.setTypeIds(Constants.SC_CATEGORY);
knowledgeParam.setUserId(loginUser.getId());
......
......@@ -457,6 +457,8 @@ class KnowledgeServiceImpl implements IKnowledgeService {
//设置分页参数
searchSourceBuilder.size(pageSize);
searchSourceBuilder.from((pageNo - 1) * pageSize);
//性能优化,查询列表时不查询正文字段
searchSourceBuilder.fetchSource(null, new String[]{"contents","contentWithTag"});
//默认按照置顶以及时间倒序排列
//根据topNum正序查找,查询置顶数据
// searchSourceBuilder.sort("publishDate", SortOrder.DESC);
......@@ -497,13 +499,16 @@ class KnowledgeServiceImpl implements IKnowledgeService {
multiMatchQueryBuilder.type(MultiMatchQueryBuilder.Type.PHRASE);
if (null != knowledgeParam.getSearchScope() && Integer.valueOf(1).equals(knowledgeParam.getSearchScope())) {
multiMatchQueryBuilder.field("title");
boolQuery.must(multiMatchQueryBuilder);
} else if (null != knowledgeParam.getSearchScope() && Integer.valueOf(2).equals(knowledgeParam.getSearchScope())) {
BoolQueryBuilder nestedBoolQueryBuilder = QueryBuilders.boolQuery();
multiMatchQueryBuilder.field("contents.content");
nestedBoolQueryBuilder.must(multiMatchQueryBuilder);
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery("contents", nestedBoolQueryBuilder, ScoreMode.None);
boolQuery.must(nestedQueryBuilder);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.should(nestedQueryBuilder);
boolQueryBuilder.should(QueryBuilders.matchPhraseQuery("contentWithTag", knowledgeParam.getSearchInfo()));
boolQuery.must(boolQueryBuilder);
} else {
multiMatchQueryBuilder.field("title", 60);
BoolQueryBuilder nestedBoolQueryBuilder = QueryBuilders.boolQuery();
......@@ -515,12 +520,17 @@ class KnowledgeServiceImpl implements IKnowledgeService {
} else {
if (null != knowledgeParam.getSearchScope() && Integer.valueOf(1).equals(knowledgeParam.getSearchScope())) {
multiMatchQueryBuilder.field("title");
boolQuery.must(multiMatchQueryBuilder);
} else if (null != knowledgeParam.getSearchScope() && Integer.valueOf(2).equals(knowledgeParam.getSearchScope())) {
BoolQueryBuilder nestedBoolQueryBuilder = QueryBuilders.boolQuery();
multiMatchQueryBuilder.field("contents.content");
nestedBoolQueryBuilder.must(multiMatchQueryBuilder);
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery("contents", nestedBoolQueryBuilder, ScoreMode.None);
boolQuery.must(nestedQueryBuilder);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.should(nestedQueryBuilder);
boolQueryBuilder.should(QueryBuilders.matchQuery("contentWithTag", knowledgeParam.getSearchInfo()));
boolQuery.must(boolQueryBuilder);
} else {
multiMatchQueryBuilder.field("title", 3);
BoolQueryBuilder nestedBoolQueryBuilder = QueryBuilders.boolQuery();
......@@ -530,7 +540,6 @@ class KnowledgeServiceImpl implements IKnowledgeService {
boolQuery.must(nestedQueryBuilder);
}
}
boolQuery.must(multiMatchQueryBuilder);
}
if (StringUtils.isNotEmpty(knowledgeParam.getOrigin())) {
boolQuery.must(QueryBuilders.matchQuery("origin", knowledgeParam.getOrigin()));
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论