Skip to content

Commit

Permalink
mindspore扩展论文视频案例搜索源
Browse files Browse the repository at this point in the history
  • Loading branch information
2511689622 committed Nov 30, 2024
1 parent ae0a568 commit 5a3928b
Show file tree
Hide file tree
Showing 11 changed files with 274 additions and 26 deletions.
6 changes: 6 additions & 0 deletions src/main/java/com/search/adapter/condition/DocsCondition.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@ public class DocsCondition {
@Size(max = 15)
private String type;

/**
* card type combination.
*/
@Size(max = 15)
private String card;

/**
* request limit.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ public class DocsMindsporeCondition extends SearchDocsBaseCondition {
*/
private List<MindsporeFilter> filter;

/**
* Mindspore card flag.
*/
private String card;

/**
* 有参构造,初始化DocsMindsporeCondition.
*
Expand All @@ -45,6 +50,7 @@ public DocsMindsporeCondition(String index, DocsCondition condition) {
this.pageSize = condition.getPageSize();
this.keyword = condition.getKeyword();
this.type = condition.getType();
this.card = condition.getCard();
setMindsporeLimit(condition);
setMindsporeFilter(condition);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/* Copyright (c) 2024 openEuler Community
EasySoftware is licensed under the Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
package com.search.domain.mindspore.vo;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class MindSporeCourseVo {
/**
* 课程目录名称.
*/
private String courseCatalogName;

/**
* 二级子课程id.
*/
private String courseListId;

/**
* 视频路径.
*/
private String path;

/**
* 语言.
*/
private String lang;

/**
* 课程目录.
*/
private String courseCatalog;

/**
* 文本内容.
*/
private String textContent;

/**
* 标题.
*/
private String title;

/**
* 类型.
*/
private String type;

/**
* 课程描述.
*/
private String courseDescription;

/**
* 一级课程id.
*/
private String childrenId;

/**
* 课程类别.
*/
private String courseClasses;

/**
* 二级课程封面.
*/
private String courseCover;
}
6 changes: 6 additions & 0 deletions src/main/java/com/search/domain/mindspore/vo/MindSporeVo.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
package com.search.domain.mindspore.vo;

import com.search.domain.base.vo.CommunityBaseVo;

import lombok.Getter;
import lombok.Setter;

Expand Down Expand Up @@ -40,4 +41,9 @@ public class MindSporeVo extends CommunityBaseVo {
* 版本.
*/
private String version;

/**
* 视频对象.
*/
private MindSporeCourseVo mindsporeCourseVo;
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,12 @@ public void setOpenmindFilter(DocsCondition condition) {
ArrayList<OpenmindFilter> openmindFilters = new ArrayList<>();
if (Objects.nonNull(condition.getFilter())) {
condition.getFilter().stream().forEach(a -> {
OpenmindFilter filter = new OpenmindFilter();
filter.setType(a.getType());
filter.setVersion(a.getVersion());
filter.setDocsType(a.getDocsType());
filter.setVersionTag(a.getVersionTag());
openmindFilters.add(filter);
OpenmindFilter openmindFilter = new OpenmindFilter();
openmindFilter.setType(a.getType());
openmindFilter.setVersion(a.getVersion());
openmindFilter.setDocsType(a.getDocsType());
openmindFilter.setVersionTag(a.getVersionTag());
openmindFilters.add(openmindFilter);
});
}
this.filter = openmindFilters;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.search.adapter.vo.WordResponceVo;
import com.search.common.util.General;
import com.search.common.util.Trie;
import com.search.domain.base.vo.CountVo;
import com.search.domain.base.vo.TagsVo;
import com.search.domain.mindspore.dto.DocsMindsporeCondition;
import com.search.domain.mindspore.dto.SuggMindsporeCondition;
Expand All @@ -27,7 +28,9 @@
import com.search.infrastructure.support.action.BaseFounctionGateway;
import com.search.infrastructure.support.config.EsPopwordConfig;
import com.search.infrastructure.support.converter.CommonConverter;
import com.search.infrastructure.search.mindspore.dataobject.MindsporeCourseDo;
import com.search.infrastructure.search.mindspore.dataobject.MindsporeDo;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
Expand Down Expand Up @@ -67,11 +70,24 @@ public DocsResponceVo<MindSporeVo> searchByCondition(DocsMindsporeCondition sear
String title = String.valueOf(map.get("title"));
title = title.replace("<span>", "").replace("</span>", "");
map.put("title", title.replace(keyword, keywordSpan));

}
}
List<MindsporeDo> mindsporeDos = CommonConverter.toDoList(dateMapList, MindsporeDo.class);
List<MindSporeVo> mindSporeVos = CommonConverter.toBaseVoList(mindsporeDos, MindSporeVo.class);
List<MindSporeVo> mindSporeVos = new ArrayList<>();
for (Map<String, Object> dataMap : dateMapList) {
String type = (String) dataMap.get("type");
MindSporeVo mindSporeVo = new MindSporeVo();
switch (type) {
case "course":
MindsporeCourseDo mindsporeCourseDo = CommonConverter.toDo(dataMap, MindsporeCourseDo.class);
mindSporeVo = CommonConverter.toBaseCourseVo(mindsporeCourseDo);
break;
default:
MindsporeDo mindsporeDo = CommonConverter.toDo(dataMap, MindsporeDo.class);
mindSporeVo = CommonConverter.toBaseVo(mindsporeDo, MindSporeVo.class);
break;
}
mindSporeVos.add(mindSporeVo);
}
DocsResponceVo<MindSporeVo> docsResponceVo = new DocsResponceVo(mindSporeVos,
searchBaseCondition.getPageSize(),
searchBaseCondition.getPage(),
Expand All @@ -87,7 +103,27 @@ public DocsResponceVo<MindSporeVo> searchByCondition(DocsMindsporeCondition sear
*/
@Override
public CountResponceVo getSearchCountByCondition(DocsMindsporeCondition condition) {
return super.getDefaultSearchCountByCondition(condition);
CountResponceVo countResponceVo = super.getDefaultSearchCountByCondition(condition);
CountResponceVo resCountResponceVo = new CountResponceVo();
resCountResponceVo.setTotal(new ArrayList<CountVo>());
String[] ordeStrings = new String[]{"all", "api", "docs", "tutorials", "course",
"information", "install", "paper", "case"};
for (String s : ordeStrings) {
Boolean flag = false;
for (CountVo countVo : countResponceVo.getTotal()) {
if (countVo.getKey().equals(s)) {
resCountResponceVo.getTotal().add(countVo);
flag = true;
}
}
if (!flag) {
CountVo countVo = new CountVo();
countVo.setKey(s);
countVo.setDoc_count(0L);
resCountResponceVo.getTotal().add(countVo);
}
}
return resCountResponceVo;
}


Expand Down Expand Up @@ -169,20 +205,6 @@ public WordResponceVo getWordByConditon(WordMindsporeConditon wordConditon) {
keyCountResultList.addAll(trie.searchTopKWithPrefix(suggestCorrection, 10));
}
wordResponceVo.getWord().addAll(keyCountResultList);
/*if (keyCountResultList.size() == 0) {
SuggMindsporeCondition suggMindsporeCondition = new SuggMindsporeCondition();
suggMindsporeCondition.setIndex(wordConditon.getIndex());
suggMindsporeCondition.setKeyword(wordConditon.getQuery());
SuggResponceVo suggByCondition = getSuggByCondition(suggMindsporeCondition);
if (suggByCondition.getSuggestList() != null) {
suggByCondition.getSuggestList().forEach(a -> {
TagsVo tagsVo = new TagsVo();
tagsVo.setKey(a);
tagsVo.setCount(1L);
wordResponceVo.getWord().add(tagsVo);
});
}
}*/

return wordResponceVo;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/* Copyright (c) 2024 openEuler Community
EasySoftware is licensed under the Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
package com.search.infrastructure.search.mindspore.dataobject;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class MindsporeCourseDo {

/**
* 课程目录名称.
*/
private String courseCatalogName;

/**
* 二级子课程id.
*/
private String courseListId;

/**
* 视频路径.
*/
private String path;

/**
* 语言.
*/
private String lang;

/**
* 课程目录.
*/
private String courseCatalog;

/**
* 文本内容.
*/
private String textContent;

/**
* 标题.
*/
private String title;

/**
* 类型.
*/
private String type;

/**
* 课程描述.
*/
private String courseDescription;

/**
* 一级课程id.
*/
private String childrenId;

/**
* 课程类别.
*/
private String courseClasses;

/**
* 二级课程封面.
*/
private String courseCover;

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import com.search.domain.base.dto.SearchSortBaseCondition;
import com.search.domain.base.dto.SearchTagsBaseCondition;
import com.search.domain.base.vo.TagsVo;
import com.search.infrastructure.support.converter.CommonConverter;;
import com.search.infrastructure.support.converter.CommonConverter;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.search.domain.base.dto.SearchDocsBaseCondition;
import com.search.domain.base.dto.SearchSortBaseCondition;
import com.search.domain.base.dto.SearchTagsBaseCondition;
import com.search.domain.mindspore.dto.DocsMindsporeCondition;
import com.search.infrastructure.support.config.EsQueryBuildConfig;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.common.lucene.search.function.CombineFunction;
Expand Down Expand Up @@ -249,6 +250,12 @@ public SearchRequest getDefaultDocsSearchRequest(SearchDocsBaseCondition conditi
if (StringUtils.hasText(condition.getType())) {
boolQueryBuilder.filter(QueryBuilders.termQuery("type.keyword", condition.getType()));
}
if (condition instanceof DocsMindsporeCondition) {
String cardNot = ((DocsMindsporeCondition) condition).getCard();
if (cardNot != null && !cardNot.isEmpty()) {
boolQueryBuilder.mustNot(QueryBuilders.termQuery("type.keyword", cardNot));
}
}
this.buildShouldQuery(boolQueryBuilder, condition.getKeyword());
this.buildMustNotQuery(boolQueryBuilder, condition.getLimit(), condition.getFilter());
HighlightBuilder highlightBuilder = buildHighlightBuilder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import java.util.List;
import java.util.Map;


@Component
public class BaseFounctionResponceHandler {
/**
Expand Down
Loading

0 comments on commit 5a3928b

Please sign in to comment.