Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
beyond-clouds
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
4
Issues
4
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
段启岩
beyond-clouds
Commits
d43ecaad
Commit
d43ecaad
authored
Feb 09, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
基本搜索完成
parent
153b9d8b
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
86 additions
and
0 deletions
+86
-0
src/main/java/cn/meteor/beyondclouds/common/vo/PageVO.java
+7
-0
src/main/java/cn/meteor/beyondclouds/modules/search/api/SearchApi.java
+51
-0
src/main/java/cn/meteor/beyondclouds/modules/search/service/ISearchService.java
+11
-0
src/main/java/cn/meteor/beyondclouds/modules/search/service/impl/SearchServiceImpl.java
+17
-0
No files found.
src/main/java/cn/meteor/beyondclouds/common/vo/PageVO.java
View file @
d43ecaad
...
@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.common.vo;
...
@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.common.vo;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
lombok.Data
;
import
lombok.Data
;
import
org.springframework.data.domain.Page
;
import
java.util.List
;
import
java.util.List
;
...
@@ -29,4 +30,9 @@ public class PageVO<T> {
...
@@ -29,4 +30,9 @@ public class PageVO<T> {
setDataList
(
page
.
getRecords
());
setDataList
(
page
.
getRecords
());
setTotalPage
(
page
.
getPages
());
setTotalPage
(
page
.
getPages
());
}
}
public
PageVO
(
Page
<
T
>
page
)
{
setDataList
(
page
.
getContent
());
setTotalPage
((
long
)
page
.
getTotalPages
());
}
}
}
\ No newline at end of file
src/main/java/cn/meteor/beyondclouds/modules/search/api/SearchApi.java
0 → 100644
View file @
d43ecaad
package
cn
.
meteor
.
beyondclouds
.
modules
.
search
.
api
;
import
cn.meteor.beyondclouds.common.form.PageForm
;
import
cn.meteor.beyondclouds.common.vo.PageVO
;
import
cn.meteor.beyondclouds.core.annotation.Anonymous
;
import
cn.meteor.beyondclouds.core.api.Response
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.service.ISearchService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.Valid
;
/**
* @author meteor
*/
@RestController
@RequestMapping
(
"/api/search"
)
@Api
(
tags
=
"搜索API"
)
public
class
SearchApi
{
private
ISearchService
searchService
;
@Autowired
public
SearchApi
(
ISearchService
searchService
)
{
this
.
searchService
=
searchService
;
}
@Anonymous
@GetMapping
(
""
)
@ApiOperation
(
"搜索"
)
public
Response
<?>
search
(
@Valid
PageForm
pageForm
,
String
keywords
,
BindingResult
bindingResult
)
{
if
(
bindingResult
.
hasErrors
())
{
return
Response
.
fieldError
(
bindingResult
.
getFieldError
());
}
// spring的分页是从0开始的,对输入的页码减1后可以统一分页规则
pageForm
.
setPage
(
pageForm
.
getPage
()
-
1
);
Page
<
SearchItem
>
searchItemPage
=
searchService
.
searchPage
(
pageForm
.
getPage
(),
pageForm
.
getSize
(),
keywords
);
PageVO
<
SearchItem
>
searchItemPageVO
=
new
PageVO
<>(
searchItemPage
);
return
Response
.
success
(
searchItemPageVO
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/search/service/ISearchService.java
View file @
d43ecaad
...
@@ -2,6 +2,8 @@ package cn.meteor.beyondclouds.modules.search.service;
...
@@ -2,6 +2,8 @@ package cn.meteor.beyondclouds.modules.search.service;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.entity.SearchItem
;
import
cn.meteor.beyondclouds.modules.search.enums.SearchItemType
;
import
cn.meteor.beyondclouds.modules.search.enums.SearchItemType
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
java.util.Optional
;
import
java.util.Optional
;
...
@@ -40,4 +42,13 @@ public interface ISearchService {
...
@@ -40,4 +42,13 @@ public interface ISearchService {
*/
*/
Optional
<
SearchItem
>
getSearchItem
(
SearchItemType
searchItemType
,
String
itemId
);
Optional
<
SearchItem
>
getSearchItem
(
SearchItemType
searchItemType
,
String
itemId
);
/**
* 根据关键词分页搜索
* @param pageNumber
* @param pageSize
* @param keywords
* @return
*/
Page
<
SearchItem
>
searchPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
keywords
);
}
}
src/main/java/cn/meteor/beyondclouds/modules/search/service/impl/SearchServiceImpl.java
View file @
d43ecaad
...
@@ -22,7 +22,12 @@ import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
...
@@ -22,7 +22,12 @@ import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
cn.meteor.beyondclouds.modules.user.entity.User
;
import
cn.meteor.beyondclouds.modules.user.service.IUserService
;
import
cn.meteor.beyondclouds.modules.user.service.IUserService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.elasticsearch.index.query.DisMaxQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.Optional
;
import
java.util.Optional
;
...
@@ -79,6 +84,18 @@ public class SearchServiceImpl implements ISearchService {
...
@@ -79,6 +84,18 @@ public class SearchServiceImpl implements ISearchService {
return
searchRepository
.
findById
(
SearchItemId
.
of
(
itemType
,
itemId
));
return
searchRepository
.
findById
(
SearchItemId
.
of
(
itemType
,
itemId
));
}
}
@Override
public
Page
<
SearchItem
>
searchPage
(
Integer
pageNumber
,
Integer
pageSize
,
String
keywords
)
{
DisMaxQueryBuilder
disMaxQueryBuilder
=
new
DisMaxQueryBuilder
();
QueryBuilder
titleQueryBuilder
=
QueryBuilders
.
matchQuery
(
"title"
,
keywords
).
boost
(
2
f
);
QueryBuilder
descriptionQueryBuilder
=
QueryBuilders
.
matchQuery
(
"description"
,
keywords
);
QueryBuilder
contentQueryBuilder
=
QueryBuilders
.
matchQuery
(
"content"
,
keywords
);
disMaxQueryBuilder
.
add
(
titleQueryBuilder
);
disMaxQueryBuilder
.
add
(
descriptionQueryBuilder
);
disMaxQueryBuilder
.
add
(
contentQueryBuilder
);
return
searchRepository
.
search
(
disMaxQueryBuilder
,
PageRequest
.
of
(
pageNumber
,
pageSize
));
}
private
SearchItem
getSearchItemInDb
(
SearchItemType
itemType
,
String
itemId
)
{
private
SearchItem
getSearchItemInDb
(
SearchItemType
itemType
,
String
itemId
)
{
SearchItem
searchItem
=
null
;
SearchItem
searchItem
=
null
;
try
{
try
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment