文章搜索比较常用代码

文章搜索

@Service
@Log4j2
public class ArticleSearchServiceImpl implements ArticleSearchService {

@Autowired
private RestHighLevelClient restHighLevelClient;

/**
 * app端文章搜索
 * @param dto
 * @return
 */
@Override
public ResponseResult search(UserSearchDto dto) throws IOException {
    //1.检查参数
    if(dto == null || StringUtils.isBlank(dto.getSearchWords())){
        return ResponseResult.errorResult(AppHttpCodeEnum.PARAM_INVALID);
    }

    //2.从es索引库中检索数据

    //构建搜索请求对象,需要指定索引库名称
    SearchRequest searchRequest = new SearchRequest("app_info_article");
    //条件构建器
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

    //布尔查询
    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

    //根据关键字分词查询--》title  content
    QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders.queryStringQuery(dto.getSearchWords()).field("title").field("content").defaultOperator(Operator.OR);
    boolQueryBuilder.must(queryStringQueryBuilder);
    //查询小于minBehotTime的数据
    RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("publishTime").lt(dto.getMinBehotTime());
    boolQueryBuilder.filter(rangeQueryBuilder);
    searchSourceBuilder.query(boolQueryBuilder);

    //按照发布时间倒序查询
    searchSourceBuilder.sort("publishTime", SortOrder.DESC);

    //分页
    searchSourceBuilder.from(0);
    searchSourceBuilder.size(dto.getPageSize());
    searchRequest.source(searchSourceBuilder);
    SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

    //3.封装返回

    List<Map> articleList = new ArrayList<>();

    SearchHit[] hits = searchResponse.getHits().getHits();
    for (SearchHit hit : hits) {
        String sourceAsString = hit.getSourceAsString();
        Map map = JSON.parseObject(sourceAsString, Map.class);
        articleList.add(map);
    }
    return ResponseResult.okResult(articleList);
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
E桶金行业搜索引擎系统(包含多线程客户端蜘蛛系统) V1.6 版发布! E桶金行业搜索引擎 特别适用于超大、中型信息门户、行业门户、电子商务等网站使用。 它是一款真正意义上的搜索引擎:具有自己的蜘蛛、分词、索引、搜索等全套功能。 而且所有功能全部基于web页面完成,您只需要购买一款支持asp.net的虚拟主机就能完成本程序的部署,网站轻松上线。 本程序具有毫秒级高速搜索, 搜索结果相关度排序 。多关键词搜索、超长词条搜索、关键词高亮显示。 该程序为ASP.NET2.0版本程序,只要空间支持asp.net2.0即可。 需要确保iis的默认文档中包含default.aspx 演示地址:http://so.12ym.com 官方网址:http://www.12ym.com/3/111/ 技术支持:http://bbs.12ym.com/ 后台管理地址:/admin/default.aspx 默认帐号和密码均为:etongjin 本程序包中的Spider.rar文件是客户端蜘蛛插件,用于多线程快速索引网站,并抓取快照。 本程序包中的MsSql.rar文件为MsSql数据库版本附加文件包,如果您想使用sql版本,参照mssql增值包中的说明。 注意:本程序的商业授权分两种版本:Access版本和MsSql版本,如果您的授权是Access版本,那么升级为MsSql版本后,将变为MsSql免费版本,如果想升级为MsSql商业版本,请联系E桶金客服。 本系统目前只支持网站根目录浏览,不能放到虚拟目录或者子文件夹中! 如果您想购买E桶金行业搜索引擎,可以联系销售客服QQ。 销售客服QQ:83498254,178301967 E桶金软件(http://www.etongjin.com),助您博得人生的第一桶金 ! 2011.06.01升级(1.6版本)的主要内容如下: 1.提供两种蜘蛛客户端索引和网站索引进行合并的策略 2.优化编码识别规则,大幅件减少搜索日志乱码现象 3.后台可批量删除某一域名下的所有搜引文件的功能! 4.可过滤某一ip的搜索记录,避免数据库迅速膨胀 5.将广告内容的字数限制由100个字符增长到128个字符 6.升级优化客户端蜘蛛的部分功能:修正入口地址设置中屏蔽的url关键词设置后无效的问题;修正定时更新,间隔更新设置后,按钮无法提交的问题;蜘蛛程序每执行一阶段采集任务后,自动释放cpu和内存,避免蜘蛛一直执行会挂死。 2011.05.18升级(1.51版本) 1.5版升级的主要内容如下: 1.全新规划系统架构,彻底分离数据访问层,推出Access和MS SQL两个版本。(非常重要) 2.增加百宝箱功能,可以像百度开放平台一样轻松地在自己的搜索中增加自己特有的应用,如:万年历、时间、在线汇率等; 3.推广用户增加保存公司名称和网址的功能。(重要) 4.优化前台页面显示。 2011.02.18升级(1.1版本) 1.1版升级的主要内容如下: 1.推广中心集成支付宝支付功能,可以直接在线充值投放竞价广告。(非常重要) 2.增加记录百度、Google等搜索引擎爬行记录的功能,并在搜索日志和广告点击记录中过滤蜘蛛的爬行日志。 3.后台的“广告点击记录”、“用户贡献列表”、“搜索日志列表”、“蜘蛛爬行列表”均增加“删除全部记录”的按钮,当数据库较大时可选择一次性清理这些数据。(重要) 4.对推广中心和后台管理界面的细节和样式进行优化。(重要) 2011.01.12升级(1.0 Beta版本) 1.0版升级的主要内容如下: 1.增加客户端蜘蛛功能,多线程抓取快照,建立索引,更加高效、稳定。(重要) 2.初步完成插件机制,为以后的程序功能扩展提供基础。(重要) 3.对搜索列表页面进行SEO处理,避免百度、Google等搜索引擎陷入链接陷阱。 2010.12.17升级(0.95版本) 0.95版升级的主要内容如下: 1.提高系统稳定性:优化蜘蛛抓取网页时索引建立的方式,避免因服务器异常,导致整站索引损坏的问题;优化一些蜘蛛抓取的容错功能。(重要) 2.完善搜索关键词竞价广告系统,使广告匹配更精准;增加竞价价格查询;并修正关键词广告删除后,个别时候仍会扣掉广告主一些积分的bug。(重要) 3.完善索引系统:增加对页面meta标签中description属性的索引;修正个别页面会索引css或js代码的问题;修正后台有时无法删除索引的问题。 4.增加一些后台配置功能:自由设置当本站搜索不出结果时是否自动补充百度搜索结果;自由设置网站蜘蛛的名称;自由设置注册的推广用户是否需要审核。(重要) 2010.09.10升级(0.92版本) 0.92版升级的主要内容如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值