Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
K
know-base
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
张京坤
know-base
Commits
862304bd
提交
862304bd
authored
1月 08, 2024
作者:
ChenShiQiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
search
上级
d140b349
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
70 行增加
和
26 行删除
+70
-26
KnowledgeServiceImpl.java
.../com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
+67
-24
KnowledgeParam.java
src/main/java/com/zzsn/knowbase/vo/KnowledgeParam.java
+3
-2
没有找到文件。
src/main/java/com/zzsn/knowbase/service/impl/KnowledgeServiceImpl.java
浏览文件 @
862304bd
...
...
@@ -20,13 +20,12 @@ import org.elasticsearch.action.search.SearchResponse;
import
org.elasticsearch.client.RequestOptions
;
import
org.elasticsearch.client.RestHighLevelClient
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.MultiMatchQueryBuilder
;
import
org.elasticsearch.index.query.NestedQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.builder.SearchSourceBuilder
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.htmlcleaner.CleanerProperties
;
import
org.htmlcleaner.HtmlCleaner
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -56,7 +55,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
private
ProduceInfo
produceInfo
;
@Override
public
void
addKnowledge
(
HttpServletRequest
httpServletRequest
,
Knowledge
knowledge
)
{
public
void
addKnowledge
(
HttpServletRequest
httpServletRequest
,
Knowledge
knowledge
)
{
if
(
null
==
knowledge
.
getId
())
{
knowledge
.
setId
(
codeGenerateUtil
.
geneIdNo
(
Constants
.
FINANCE
,
8
));
...
...
@@ -72,17 +71,17 @@ class KnowledgeServiceImpl implements IKnowledgeService {
.
filePath
(
"C:/bbb.docx"
)
.
build
());
knowledge
.
setFiles
(
knowFileList
);
List
<
Content
>
contentList
=
new
ArrayList
<>();
List
<
Content
>
contentList
=
new
ArrayList
<>();
List
<
String
>
contentStringList
=
new
ArrayList
<>();
String
html
=
null
;
try
{
html
=
DocUtil
.
docParseHtml
(
knowledge
.
getFiles
().
get
(
0
).
getFilePath
());
html
=
DocUtil
.
docParseHtml
(
knowledge
.
getFiles
().
get
(
0
).
getFilePath
());
String
htmlWithTable
=
html
.
replace
(
"<p>"
,
""
);
contentStringList
=
Arrays
.
asList
(
htmlWithTable
.
split
(
"</p>"
));
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
if
(!
contentStringList
.
isEmpty
())
{
if
(!
contentStringList
.
isEmpty
())
{
knowledge
.
setTitle
(
contentStringList
.
get
(
0
));
for
(
String
s
:
contentStringList
)
{
contentList
.
add
(
Content
.
builder
()
...
...
@@ -94,22 +93,22 @@ class KnowledgeServiceImpl implements IKnowledgeService {
knowledge
.
setContents
(
contentList
);
esOpUtil
.
docSavaByEntity
(
Constants
.
ES_DATA_FOR_KNOWLEDGE
,
knowledge
.
getId
(),
knowledge
);
KnowledgeMessage
knowledgeMessage
=
new
KnowledgeMessage
();
KnowledgeMessage
knowledgeMessage
=
new
KnowledgeMessage
();
BeanUtils
.
copyProperties
(
knowledge
,
knowledgeMessage
);
BeanUtils
.
copyProperties
(
knowledge
,
knowledgeMessage
);
// CleanerProperties props = new CleanerProperties();
// props.setPruneTags("table");
// String htmlWithoutTable = new HtmlCleaner(props).clean(html).getText().toString();
// htmlWithoutTable = htmlWithoutTable.replace("<p>", "");
// List<String>contentStringWithoutTableList = Arrays.asList(htmlWithoutTable.split("</p>"));
List
<
Content
>
messageContentList
=
contentList
.
stream
()
.
filter
(
item
->
item
.
getContent
().
length
()>
10
)
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"<img"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"<table"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"<tr>"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"</tr>"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"<td>"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"</td>"
))
List
<
Content
>
messageContentList
=
contentList
.
stream
()
.
filter
(
item
->
item
.
getContent
().
length
()
>
10
)
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"<img"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"<table"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"<tr>"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"</tr>"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"<td>"
))
.
filter
(
item
->
!
item
.
getContent
().
contains
(
"</td>"
))
.
collect
(
Collectors
.
toList
());
knowledgeMessage
.
setContents
(
messageContentList
);
produceInfo
.
sendKnowledgeContents
(
knowledgeMessage
);
...
...
@@ -160,8 +159,57 @@ class KnowledgeServiceImpl implements IKnowledgeService {
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
if
(
StringUtils
.
isNotEmpty
(
knowledgeParam
.
getTitle
()))
{
boolQuery
.
must
(
QueryBuilders
.
matchPhraseQuery
(
"title"
,
knowledgeParam
.
getTitle
()));
// if (StringUtils.isNotEmpty(knowledgeParam.getTitle())) {
// boolQuery.must(QueryBuilders.matchPhraseQuery("title", knowledgeParam.getTitle()));
// }
// if (StringUtils.isNotEmpty(knowledgeParam.getContent())) {
// BoolQueryBuilder nestedBoolQueryBuilder = QueryBuilders.boolQuery();
// nestedBoolQueryBuilder.must(QueryBuilders.matchPhraseQuery("contents.content", knowledgeParam.getContent()));
// NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery("contents", nestedBoolQueryBuilder, ScoreMode.None);
// boolQuery.must(nestedQueryBuilder);
// }
//搜索条件
if
(
StringUtils
.
isNotBlank
(
knowledgeParam
.
getSearchInfo
()))
{
MultiMatchQueryBuilder
multiMatchQueryBuilder
=
QueryBuilders
.
multiMatchQuery
(
knowledgeParam
.
getSearchInfo
());
if
(
"精确"
.
equals
(
knowledgeParam
.
getSearchAccuracy
()))
{
multiMatchQueryBuilder
.
type
(
MultiMatchQueryBuilder
.
Type
.
PHRASE
);
if
(
null
!=
knowledgeParam
.
getSearchScope
()
&&
Integer
.
valueOf
(
1
).
equals
(
knowledgeParam
.
getSearchScope
()))
{
multiMatchQueryBuilder
.
field
(
"title"
);
}
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
);
}
else
{
multiMatchQueryBuilder
.
field
(
"title"
,
60
);
BoolQueryBuilder
nestedBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
multiMatchQueryBuilder
.
field
(
"contents.content"
,
20
);
nestedBoolQueryBuilder
.
must
(
multiMatchQueryBuilder
);
NestedQueryBuilder
nestedQueryBuilder
=
QueryBuilders
.
nestedQuery
(
"contents"
,
nestedBoolQueryBuilder
,
ScoreMode
.
None
);
boolQuery
.
must
(
nestedQueryBuilder
);
}
}
else
{
if
(
null
!=
knowledgeParam
.
getSearchScope
()
&&
Integer
.
valueOf
(
1
).
equals
(
knowledgeParam
.
getSearchScope
()))
{
multiMatchQueryBuilder
.
field
(
"title"
);
}
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
);
}
else
{
multiMatchQueryBuilder
.
field
(
"title"
,
3
);
BoolQueryBuilder
nestedBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
multiMatchQueryBuilder
.
field
(
"contents.content"
,
1
);
nestedBoolQueryBuilder
.
must
(
multiMatchQueryBuilder
);
NestedQueryBuilder
nestedQueryBuilder
=
QueryBuilders
.
nestedQuery
(
"contents"
,
nestedBoolQueryBuilder
,
ScoreMode
.
None
);
boolQuery
.
must
(
nestedQueryBuilder
);
}
}
boolQuery
.
must
(
multiMatchQueryBuilder
);
}
if
(
StringUtils
.
isNotEmpty
(
knowledgeParam
.
getOrigin
()))
{
boolQuery
.
must
(
QueryBuilders
.
matchPhraseQuery
(
"origin"
,
knowledgeParam
.
getOrigin
()));
...
...
@@ -185,12 +233,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
boolQuery
.
filter
(
QueryBuilders
.
rangeQuery
(
"publishDate"
).
lte
(
EsDateUtil
.
esFieldDateFormat
(
DateUtil
.
dateToString
(
new
Date
()))));
}
if
(
StringUtils
.
isNotBlank
(
knowledgeParam
.
getContent
()))
{
BoolQueryBuilder
nestedBoolQueryBuilder
=
QueryBuilders
.
boolQuery
();
nestedBoolQueryBuilder
.
must
(
QueryBuilders
.
termQuery
(
"contents.content"
,
knowledgeParam
.
getContent
()));
NestedQueryBuilder
nestedQueryBuilder
=
QueryBuilders
.
nestedQuery
(
"contents"
,
nestedBoolQueryBuilder
,
ScoreMode
.
None
);
boolQuery
.
must
(
nestedQueryBuilder
);
}
searchSourceBuilder
.
query
(
boolQuery
);
searchRequest
.
source
(
searchSourceBuilder
);
SearchResponse
searchResponse
=
null
;
...
...
src/main/java/com/zzsn/knowbase/vo/KnowledgeParam.java
浏览文件 @
862304bd
...
...
@@ -17,7 +17,6 @@ import lombok.NoArgsConstructor;
@Data
public
class
KnowledgeParam
{
private
String
id
;
private
String
title
;
/**
* 来源
*/
...
...
@@ -53,6 +52,8 @@ public class KnowledgeParam {
private
String
startTime
;
private
String
endTime
;
private
String
content
;
private
String
searchInfo
;
private
Integer
searchScope
;
private
String
searchAccuracy
;
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论