提交 1efa8fb7 作者: yanxin

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

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