`
- 浏览:
69530 次
- 性别:
- 来自:
北京
-
- @Service
- @Qualifier("searchService")
- public class SearchService {
- @Value("${solr.url}")
- private String searchurl;
- @Value("${solr.q.fields}")
- private String qfields;
- @Value("${solr.s.fields}")
- private String sfields;
- @Value("${solr.h.fields}")
- private String hfields;
-
-
-
-
-
-
-
- public PageInfo<Position> query(String key, int page, int pagesize) {
- PageInfo<Position> ps = new PageInfo<Position>(page, pagesize);
- SolrServer server = new HttpSolrServer(searchurl);
- SolrQuery params = new SolrQuery();
- params.setQuery(setQueryFields(key, qfields));
- params.setStart(ps.getStart());
- params.setRows(ps.getPagesize());
- boolean ish = setHighlight(params,hfields);
- setSortFields(params, sfields);
- SolrDocumentList list = null;
-
- Map<String,Map<String,List<String>>> high= null;
- try {
- QueryResponse response = server.query(params);
- list = response.getResults();
- if(ish){
- high = response.getHighlighting();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- if(ish){
-
- }
- ps.setItems(mappingVo(list,high,ish));
- ps.setTotal((int) list.getNumFound());
- return ps;
- }
-
-
-
-
-
-
- private boolean setHighlight(SolrQuery params, String hfields2) {
- if(StringUtils.hasText(hfields2)){
- String[] arr = hfields2.split(",");
- for (String s : arr) {
- params.addHighlightField(s);
- }
- params.setHighlight(true);
- params.setHighlightSimplePre("<font color='red'><em>");
- params.setHighlightSimplePost("</em></font>");
- return true;
- }
- return false;
- }
-
-
-
-
-
-
-
- private List<Position> mappingVo(SolrDocumentList list,Map<String,Map<String,List<String>>> high,boolean ish) {
- List<Position> poses = new ArrayList<Position>();
- for (SolrDocument doc : list) {
- Position p = new Position();
- p.setPid(doc.getFieldValue("CP_ID").toString());
- if(ish && high.get(p.getPid()).containsKey("COMPANY_NAME")){
- p.setCompany(high.get(p.getPid()).get(("COMPANY_NAME")).toString());
- }else{
- p.setCompany(doc.getFieldValue("COMPANY_NAME").toString());
- }
- p.setStamp((Date)doc.getFieldValue("ADD_AT"));
- poses.add(p);
- }
- return poses;
- }
-
-
-
-
-
- private void setSortFields(SolrQuery params, String sfields2) {
- String[] arr = sfields2.split(",");
- for (String s : arr) {
- params.addSortField(s, ORDER.desc);
- }
-
- }
-
-
-
-
-
-
- private String setQueryFields(String key, String qfields2) {
- StringBuilder sb = new StringBuilder();
- String[] arr = qfields2.split(",");
- for (String s : arr) {
- sb.append(s).append(":").append(key).append(" OR ");
- }
- String q = sb.toString();
- return q.substring(0, q.length() - 4);
- }
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Solr学习笔记(三)——Solr客户端开发实例 在本文中,我们将深入探讨Solr客户端的开发,以便更好地理解如何在实际项目中利用Solr的强大功能。Solr是一款开源的全文搜索引擎,提供了高效的搜索和索引功能。通过Solr...
这可能包括Solr的客户端库、Lucene库以及其他的Java库,这些库将帮助我们编写和测试自定义评分组件。 `pom.zip`可能是项目打包的结果,包含了一个完整的Maven项目结构,解压后可以导入到IDE中进行开发。通常,你会...
除此之外,Solr二次开发还涉及其他常见接口的使用,例如更新文档、删除文档、处理查询结果、处理事务日志、实现自定义插件等。开发者需要熟悉Solr的API,理解请求处理器(RequestHandler)、查询解析器(QueryParser)、...
在实际项目中,PHP Solr客户端可以帮助开发者更便捷地与Solr服务器进行通信,提升开发效率。 至于文件名称列表中的"smgsolr",这可能是某种特定的Solr服务或者与Solr相关的项目名,但没有足够的信息来进行详细的...
例如,你可以使用Python的Solr客户端库(如`solrpy`或`pysolr`)来编写索引和查询的脚本。同时,Solr还支持SolrJ,这是一个专门的Java客户端API,方便Java开发者进行集成。 为了优化搜索体验,Solr提供了多种查询...
- SolrJ介绍:SolrJ是Solr的Java客户端,用于与Solr服务器通信,进行索引操作和查询。 - SolrJ索引维护:利用SolrJ进行数据的添加、删除和更新,确保索引的实时性。 - 数据导入处理器:使用DataImportHandler(DIH)...
- **插件开发**:可以通过编写自定义请求处理器、过滤器和查询解析器等插件,扩展Solr的功能。 5. **实战应用** - **搜索建议与拼写纠错**:利用Solr的自动完成和拼写检查功能,提升用户体验。 - **多语言支持**...
6. **自定义配置**:可能允许用户根据需求配置Solr连接参数,如主机地址、端口、认证信息等。 在实际开发中,结合Node.js的异步I/O特性,这个库可以帮助开发者构建高性能、响应式的搜索应用。通过阅读源代码和文档...
Solr是Apache软件基金会开发的一款开源全文搜索引擎,它基于Java平台,是Lucene的一个扩展,提供了更为方便和强大的搜索功能。在Solr 6.2.0版本中,这个强大的分布式搜索引擎引入了许多新特性和改进,使其在处理大...
1. **安装Solr客户端**:在Node.js项目中,首先需要安装一个Solr客户端库,如`solr-node-client`。通过npm(Node.js的包管理器)可以轻松安装: ``` npm install solr-node-client ``` 2. **连接Solr服务器**:...
其次,Solr自身也包含了许多功能性的jar包,如solr-solrj.jar,这是Solr的Java客户端库,用于与Solr服务器进行通信,执行索引和查询操作。还有solr-core.jar,包含了Solr服务器的主程序和核心功能,如请求处理、配置...
1. **Solr架构**:Solr基于Java开发,适用于JDK 1.7及以上版本。其架构包括客户端API、Solr服务器和SolrCloud(分布式部署模式)。Solr服务器通过HTTP/HTTPS提供RESTful API,便于与其他系统集成。 2. **索引技术**...
- Solr客户端库:如solr-solrj.jar,提供了与Solr服务器通信的API。 - 数据处理库:可能包含一些第三方库,如Apache Commons Lang、Apache Commons IO等,用于数据转换和处理。 - 自定义逻辑:如果存在自定义的数据...
在这个 Solr 实例中,自定义的 servlet 可能是为了扩展 Solr 的默认功能,比如添加特定的数据处理逻辑、优化查询性能或者提供特殊的交互接口。 QueryParser 是 Lucene 中解析查询字符串的类,它将用户输入的查询...
5. **定制化开发**:可能涵盖自定义查询解析器、过滤器和函数表达式,以满足特定的搜索需求。此外,Solrj还支持监听Solr服务器的事件,例如通过JMX监控性能指标。 6. **性能调优**:分析索引大小、硬件资源、网络...
Apache Solr 是一个开源的企业级搜索平台,由Apache软件基金会开发。它基于Java,并且是Lucene库的一个高级搜索和索引服务。Solr 7.7 版本是其历史上的一个重要版本,提供了许多增强的功能和改进。在这个Windows版本...
SolrJ 是 Solr 的 Java 客户端库,它允许开发者通过 Java API 与 Solr 服务器进行交互,包括建立索引、查询、更新和删除数据。在 SolR 1.4.1 版本中,我们可以看到 SolrJ 的使用方式。例如,以下代码展示了如何创建...
Solr,全称为Apache Solr,是一款开源的企业级搜索平台,由Apache软件基金会开发并维护。它是基于Java的,能够处理大量数据并提供快速、可扩展的全文检索、命中高亮以及丰富的文档处理功能。在分布式环境中,Solr...
Solr,全称为Apache Solr,是一款开源的企业级全文搜索引擎,由Apache软件基金会开发并维护。它是基于Lucene库的,提供了更高级别的搜索服务,包括分布式搜索、配置管理、性能优化等功能。本教程将详细介绍如何搭建...