基于Solr的搜索引擎研究与实现
- 格式:doc
- 大小:596.50 KB
- 文档页数:56
solopi使用实践
Solr是一个基于Lucene的开源搜索平台,它提供了强大的全文搜索、分布式搜索、分析和高性能等特性。
SolrPi是一个基于树莓派的Solr搜索引擎应用。
它可以在树莓派上运行Solr,从而在资源受限的环境中实现搜索功能。
在实际使用中,SolrPi可以被用于各种场景。
首先,在资源受限的环境下,比如物联网设备、嵌入式系统或者边缘计算设备,SolrPi可以提供基于Lucene的强大搜索功能,满足这些设备的搜索需求。
其次,SolrPi也可以被用于教育和学习,通过在树莓派上搭建Solr搜索引擎,用户可以学习和实践搜索引擎的原理和应用。
此外,SolrPi还可以被用于个人项目或者小型组织的搜索需求,比如搭建简单的文档搜索系统或者博客搜索功能。
在使用SolrPi时,用户需要首先准备一个树莓派设备,然后安装操作系统和Java运行环境。
接着,用户可以下载并安装SolrPi 软件,进行配置和启动。
在配置过程中,用户可以根据自己的需求调整索引和搜索的相关参数,比如字段定义、分词器选择、索引策略等。
一旦配置完成,用户就可以通过SolrPi提供的API接口或者界面进行搜索功能的调用和使用。
总的来说,SolrPi是一个在资源受限的环境下实现搜索功能的利器,它可以被广泛应用于物联网设备、教育学习、个人项目等领域,通过简单的配置和操作,用户就可以在树莓派上搭建起强大的搜索引擎应用。
摘要随着信息时代的来临,人们的生活、学习、工作和娱乐已经与信息技术充分的融为一体。
随着群众对互联网参与度的增加和企事业单位信息化的逐步深入,信息量也成倍地增长,如何能更好地从浩如烟海的数字信息中快速、精准地查找到需要的信息,成为全国人民的迫切需求。
尤其是处于信息化建设道路上的中小企业,如何快速且廉价地开放自己的信息检索系统,对于企业的成长至关重要。
本文介绍了搜索引擎的基本原理,对搜索引擎的一些核心技术进行了介绍与深入的分析;介绍了Lucene搜索引擎工具包的架构及其基本使用;对基于开源搜索引擎包Lucene的搜索框架Solr进行架构、代码、配置等方面的研究;最后设计并实现了一个基于Solr1.3的简单可用的多库搜索引擎。
整个设计过程致力于提高管理维护的方便性和可扩展性。
关键词:L ucene;Solr;搜索引擎;爬虫;中文分词AbstractWith the advent of the information era, people's lives, study, work and entertainment have been fully integrated with information technology. With the participation of the masses on the Internet and increase in the number of information-based enterprises, the amount of information has become several times as before. How to get useful information quickly and accurately has become an important thing to everyone. For the small and medium-sized enterprises, how to develop its own message retrieval system quickly and cheaply is essential for the growth of enterprises.In this paper, we introduce the basic principles of search engine and analyses a number of core technologies. I also introduce Lucene search engine tools, its basic framework and how to use it. We analyses Solr, which is an open source search engine based on Lucene, and its architecture, code, configuration. At last, we design and implement a simple multi-database search engine based on Solr1.3.Keywords: L ucene ; Solr ; Search Engine ; Spider ; Chinese Word Segmentation目录第一章前言 (1)1.1绪论 (1)1.2开源搜索引擎研究的意义和现状 (3)第二章中文搜索引擎关键技术 (4)2.1搜索引擎基本结构 (4)2.2中文分词 (6)2.3相关排序 (9)2.4搜索引擎响应速度 (13)2.5网络蜘蛛 (14)第三章开源搜索引擎SOLR (16)3.1搜索引擎包L UCENE (16)3.1.1Lucene简介 (16)3.1.2Lucene与Solr的关系 (16)3.1.3Lucene的结构 (17)3.1.4Lucene的使用 (18)3.1.5Lucene的评分公式 (22)3.1.6Lucene的搜索结果排序 (23)3.2S OLR的介绍 (24)3.2.1Solr的特点与优势 (24)3.2.2Solr1.3的新特性 (25)3.3S OLR的配置和使用 (25)3.3.1Solr1.3服务器的部署 (25)3.3.2Solr1.3体系结构图 (26)3.3.3solr.xml配置文件 (27)3.3.4schema.xml配置文件 (27)3.3.5solrconfig.xml配置文件 (29)3.3.6查询HTTP接口参数 (32)3.4S OLR1.3的核心机制 (32)3.4.1内核调用机制 (32)3.4.2分库机制 (33)3.4.3缓存机制 (33)第四章基于SOLR的搜索引擎总体设计 (35)4.1设计背景和原则 (35)4.2整体结构与模块关系 (35)第五章基于SOLR的搜索引擎详细设计与实现 (37)5.1网络蜘蛛模块的设计与实现 (37)5.2N EW API模块的设计与实现 (38)5.3管理模块的设计与实现 (39)5.4配置文件的配置 (39)5.5分词模块的设计与实现 (40)5.6查询模块的设计与实现 (41)第六章结论 (42)参考文献 (43)致谢 (44)第一章前言1.1绪论随着信息技术的不断发展和人民对信息技术需求的不断增加,世界各国都在经历着前所未有的信息革命。
Solr搜索技术应用实战Solr是一个开源的搜索平台,它基于Apache Lucene构建,提供丰富的API和可扩展性,已经成为了许多开发者选择的搜索引擎。
随着数据量的增加和业务场景的多样化,Solr的应用越来越广泛。
本文将从Solr的实战应用入手,为开发者提供一些技巧和经验。
一、Solr集群搭建Solr的性能和可靠性与硬件配置和部署状态密切相关。
在生产环境中建议使用集群部署,可以分布式处理查询请求,增加搜索并发能力和容错性。
Solr集群中每个节点可以作为独立的搜索服务器,提供相同的搜索服务。
一个完整的Solr集群由多个节点组成,分为SolrCloud和非SolrCloud两种模式,SolrCloud是集群管理的一种模式,在SolrCloud模式下,Solr 集群可以更方便地进行扩容和管理。
以下是SolrCloud集群的简要步骤:1. 准备ZooKeeper,SolrCloud使用ZooKeeper进行集群管理。
2. 启动Solr节点,并与ZooKeeper进行连接。
3. 使用Solr控制台创建集合,集合分片在所有节点之间平均分配。
4. 访问SolrCloud集群的URL,进行搜索等操作。
二、Solr数据导入Solr并不能直接从数据库或文件中获取数据,需要使用数据导入扩展来实现数据导入。
Solr数据导入流程大致如下:1. 配置数据源和数据目标,Solr支持多种数据源,包括数据库、文件、RSS等。
2. 配置数据导入的转换器和分词器,将数据源的数据转化为Solr需要的格式。
3. 配置数据导入的定时策略,Solr可以定时从数据源获取数据并导入。
以下是一个Solr数据导入的示例配置文件:```<dataConfig><dataSource name=\"jdbcDataSource\" type=\"JdbcDataSource\" driver=\"com.mysql.jdbc.Driver\"url=\"jdbc:mysql:\/\/localhost:3306\/test\" user=\"root\" password=\"123456\"\/><document><entity name=\"book\" query=\"SELECT * FROM book\"><field column=\"id\" name=\"id\"\/><field column=\"title\" name=\"title\"\/><field column=\"author\" name=\"author\"\/><field column=\"description\" name=\"description\"\/><\/entity><\/document><\/dataConfig>```以上配置会将MySQL数据库中的book表的所有数据导入Solr,并映射到Solr的id、title、author和description字段中。
Solr搜索引擎的设计和实现搜索引擎是当今互联网上最重要的工具之一。
对于企业和网站来说,搜索引擎不仅能够使用户更快地找到他们所需要的信息,而且还能够提高网站的可用性和搜索排名。
Solr搜索引擎是一个基于Lucene的搜索平台,可以提供快速、准确和可扩展的搜索功能。
在本文中,我们将探讨Solr搜索引擎的设计和实现。
一、Solr搜索引擎的概述Solr搜索引擎是一个开源的搜索平台,由Apache基金会开发和维护。
Solr搜索引擎的基础是Lucene搜索引擎,它在性能和可扩展性方面做出了大量的改进。
Solr搜索引擎可以满足不同的搜索需求,包括全文搜索、过滤搜索和数据聚合搜索等。
此外,Solr 搜索引擎还提供了丰富的管理界面和API,可以方便地配置和管理搜索应用程序。
二、Solr搜索引擎的架构Solr搜索引擎的架构由以下组件组成:1. HTTP服务器 - Solr搜索引擎基于HTTP协议实现,因此需要一个HTTP服务器来处理请求。
Solr搜索引擎提供了内置的Jetty服务器和外部Web服务器支持。
2. XML配置文件 - Solr搜索引擎的配置是通过XML文件实现的。
配置文件包括核心配置文件、请求处理器配置文件、查询解析器配置文件等。
3. Lucene索引库 - Solr搜索引擎建立在Lucene索引库的基础上,通过对Lucene索引库的扩展和优化,支持更加灵活的搜索和查询操作。
4. 请求处理器 - Solr搜索引擎的请求处理器负责处理用户提交的搜索请求。
Solr搜索引擎提供多个请求处理器,包括查询处理器、提交处理器、导入处理器和更新处理器等。
5. 查询解析器 - Solr搜索引擎的查询解析器是查询请求的重要组成部分,它负责将用户的查询请求解析为Lucene索引库的查询表达式。
6. 响应生成器 - Solr搜索引擎的响应生成器负责将查询结果转化为响应格式,包括XML、JSON和CSV等。
三、Solr搜索引擎的工作原理Solr搜索引擎的工作过程包括索引构建和搜索查询两个阶段。
solr简单搜索案例solr简单搜索案例使⽤Solr实现电商⽹站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类、价格过滤搜索结果,也可以根据价格进⾏排序,实现分页。
架构分为:1、 solr服务器2、⾃⼰的web服务器(需要开发)3、数据库mysql solr案例本案例⽤的springmvc+solr+mysql⾃⼰开发的应⽤1、 Controller获取搜索条件,并响应搜索结果到前台页⾯。
2、 Service使⽤solrj来调⽤solr的服务进⾏索引和搜索Service调⽤dao进⾏商品数据的维护时,要同步更新索引库(不实现)3、 Dao(本案例不实现)对商品数据进⾏维护和查询功能:接收service层传递过来的参数,根据参数查询索引库,返回查询结果。
参数:SolrQuery对象返回值:⼀个商品列表List<ProductModel>,还需要返回查询结果的总数量。
返回:ResultModel⽅法定义:ResultModel queryProduct(SolrQuery query) throws Exception;商品对象模型:public class ProductModel {// 商品编号private String pid;// 商品名称private String name;// 商品分类名称private String catalog_name;// 价格private float price;// 商品描述private String description;// 图⽚名称private String picture;}返回值对象模型public class ResultModel {// 商品列表private List<ProductModel> productList;// 商品总数private Long recordCount;// 总页数private int pageCount;// 当前页private int curPage;}Dao接⼝:public ResultModel productSearch(SolrQuery solrQuery) throws Exception; DaoImp:@Repositorypublic class ProductDaoimp implements ProductDao {@Autowiredprivate SolrServer solrServer;@Overridepublic ResultModel productSearch(SolrQuery solrQuery) throws Exception {// TODO Auto-generated method stubResultModel resultModel = new ResultModel();QueryResponse query = solrServer.query(solrQuery);SolrDocumentList results = query.getResults();resultModel.setRecordCount(results.getNumFound());List<ProductModel> productList = new ArrayList<>();for (SolrDocument doc : results) {ProductModel productModel = new ProductModel();String id = (String) doc.get("id");Map<String, Map<String, List<String>>> highlighting = query.getHighlighting();String productname = "";if (highlighting != null && highlighting.size() > 0) {List<String> list2 = highlighting.get(doc.get("id")).get("product_name");if (list2 != null) {productname = list2.get(0);} else {productname = (String) doc.get("product_name");}}productModel.setPid(id);productModel.setName(productname);productModel.setCatalog_name((String) doc.get("product_catalog_name"));productModel.setPicture((String) doc.get("product_picture"));productModel.setPrice(Float.parseFloat((String.valueOf(doc.get("product_price"))))); productList.add(productModel);}resultModel.setProductList(productList);return resultModel;}Service层(接⼝及实现):接⼝:public interface ProductService {ResultModel productSearch(String queryString,String catalog_name, String price, Integer page, String sort, Model model) throws Exception; }实现:@Service@Transactionalpublic class ProductServiceimp implements ProductService {private final int PAZE_SIZE = 8;@Autowiredprivate ProductDao productDao;@Overridepublic ResultModel productSearch(String queryString, String catalog_name, String price, Integer page, String sort,Model model) throws Exception {// TODO Auto-generated method stub// 拼装查询条件SolrQuery query = new SolrQuery();query.set("df", "product_keywords");// 查询条件if (null != queryString && !"".equals(queryString)) {query.setQuery(queryString);} else {query.setQuery("*:*");}// 商品分类名称过滤if (null != catalog_name && !"".equals(catalog_name)) {query.addFilterQuery("product_catalog_name:" + catalog_name);}// 价格区间过滤if (null != price && !"".equals(price)) {String[] strings = price.split("-");query.addFilterQuery("product_price:[" + strings[0] + " TO " + strings[1] + "]");}// 排序条件if ("1".equals(sort)) {query.setSort("product_price", ORDER.desc);} else {query.setSort("product_price", ORDER.asc);}if (null == page) {page = 1;}int start = (page - 1) * PAZE_SIZE;//设置默认搜索域query.setStart(page);query.setRows(PAZE_SIZE);// ⾼亮设置query.setHighlight(true);query.addHighlightField("product_name");query.setHighlightSimplePre("<span style=\"color:red\">");query.setHighlightSimplePost("</span>");// 查询商品列表ResultModel resultModel = productDao.productSearch(query);// 计算总页数long pages = ( resultModel.getRecordCount() / PAZE_SIZE);if ( resultModel.getRecordCount() % PAZE_SIZE > 0) {pages = pages + 1;}resultModel.setPageCount(pages);resultModel.setCurPage(page);return resultModel;}}Controller层:@Controllerpublic class ProductController {@Autowiredprivate ProductService productservice;@RequestMapping("/list")public String productSearch(String queryString,String catalog_name, String price, Integer page, String sort, Model model) throws Exception { ResultModel resultModel= productservice.productSearch(queryString,catalog_name, price, page, sort, model);model.addAttribute("result", resultModel);// 参数回显model.addAttribute("queryString", queryString);model.addAttribute("caltalog_name", catalog_name);model.addAttribute("price", price);model.addAttribute("sort", sort);model.addAttribute("page", page);return "product_list";}}POJO类:public class ProductModel {// 商品编号private String pid;// 商品名称private String name;// 商品分类名称private String catalog_name;// 价格private float price;// 商品描述private String description;// 图⽚名称private String picture;public void setPid(String pid) {this.pid = pid;}public String getName() {return name;}public void setName(String name) { = name;}public String getCatalog_name() {return catalog_name;}public void setCatalog_name(String catalog_name) {this.catalog_name = catalog_name;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public String getPicture() {return picture;}public void setPicture(String picture) {this.picture = picture;}}ResultModel类:public class ResultModel {// 商品列表private List<ProductModel> productList;// 商品总数private Long recordCount;// 总页数private Long pageCount;// 当前页private long curPage;public List<ProductModel> getProductList() {return productList;}public void setProductList(List<ProductModel> productList) {this.productList = productList;}public Long getRecordCount() {return recordCount;}public void setRecordCount(Long recordCount) {this.recordCount = recordCount;}public Long getPageCount() {return pageCount;}public void setPageCount(Long pageCount) {this.pageCount = pageCount;}public long getCurPage() {return curPage;}public void setCurPage(long curPage) {this.curPage = curPage;}}config:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:dubbo="/schema/dubbo" xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-4.0.xsd /schema/mvc /schema/mvc/spring-mvc-4.0.xsd/schema/dubbo /schema/dubbo/dubbo.xsd/schema/context /schema/context/spring-context-4.0.xsd"><!--注解扫描 --><context:component-scan base-package="cn.kingdee"></context:component-scan><!--注解驱动(为了提⾼运⾏速度) --><mvc:annotation-driven /><!--视图解析器 --><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><!--路径前缀 --><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp"></property></bean><!--注⼊solrServer--><bean id="solrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer"><constructor-arg value="http://localhost:8080/solr"></constructor-arg></bean></beans><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>springmvcssm</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springMvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping></web-app>jsp:<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="/jsp/jstl/core"%><%@ taglib prefix="fmt" uri="/jsp/jstl/fmt" %><!DOCTYPE html><!-- saved from url=(0047)/list.html?cat=1315,1343,1355 --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta content="utf-8" http-equiv="charset"><link rel="stylesheet" type="text/css"href="<c:url value='/resource'/>/base.css" media="all"><link rel="stylesheet" type="text/css"href="<c:url value='/resource'/>/plist20131112.css" media="all"><link rel="stylesheet" type="text/css"href="<c:url value='/resource'/>/list-page-20141009.css" media="all"><link rel="stylesheet" type="text/css"href="<c:url value='/resource'/>/pop_compare.css" media="all"><link rel="shortcut icon" type="image/ico"href="/favicon.ico"><script type="text/javascript"src="<c:url value='/resource'/>/jquery-1.2.6.pack.js"></script><style id="style-1-cropbar-clipper">/* Copyright 2014 Evernote Corporation. All rights reserved. */.en-markup-crop-options {top: 18px !important;left: 50% !important;margin-left: -100px !important;width: 200px !important;border: 2px rgba(255,255,255,.38) solid !important;border-radius: 4px !important;}.en-markup-crop-options div div:first-of-type {margin-left: 0px !important;}</style><script type="text/javascript">function query() {//执⾏关键词查询时清空过滤条件document.getElementById("catalog_name").value="";document.getElementById("price").value="";document.getElementById("page").value="";//执⾏查询queryList();}function queryList() {//提交表单document.getElementById("actionForm").submit();}function filter(key, value) {document.getElementById(key).value=value;queryList();}function sort() {var s = document.getElementById("sort").value;if (s != "1") {s = "1";} else {s = "0";}document.getElementById("sort").value = s;queryList();}function changePage(p) {var curpage = Number(document.getElementById("page").value);curpage = curpage + p;document.getElementById("page").value = curpage;queryList();}</script></head><body class="root61"><div id="shortcut-2013"><div class="w"><ul class="fl lh"><li class="fore1 ld"><b></b><a href="#" rel="nofollow">收藏京东</a></li><li class="fore2 ld"><s></s><a href="#" rel="nofollow">我的订单</a></li><li class="fore2-1 ld" id="jd-vip"><i></i><i></i><s></s><a target="_blank" rel="nofollow" href="/">会员俱乐部</a></li><li class="fore2-2 ld" id="jd-dakehu"> <i></i><s></s> <a href="/" target="_blank" rel="nofollow">企业频道</a> </li><li class="fore3 ld menu" id="app-jd" data-widget="dropdown" clstag="homepage|keycount|home2013|01d"><s></s><i></i><span class="outline"></span><span class="blank"></span><a href="/" target="_blank">⼿机京东</a><b></b></li><li class="fore4 ld menu" id="biz-service" data-widget="dropdown"><s></s><span class="outline"></span><span class="blank"></span>客户服务<b></b></li><li class="fore5 ld menu" id="site-nav" data-widget="dropdown"><s></s><span class="outline"></span><span class="blank"></span>⽹站导航<b></b></li></ul><span class="clr"></span></div></div><!--shortcut end--><div id="o-header-2013"><div class="w" id="header-2013"><div id="logo-2013" class="ld"><a href="/" hidefocus="true"><b></b><img src="<c:url value='/resource'/>/logo-201305.png" width="270" height="60" alt="京东"></a></div> <!--logo end--><div id="search-2013"><div class="i-search ld"><ul id="shelper" class="hide"></ul><form id="actionForm" action="list.action" method="POST"><div class="form"><input type="text" class="text" accesskey="s" name="queryString" id="key" value="${queryString }"autocomplete="off" onkeydown="javascript:if(event.keyCode==13) {query()}"><input type="button" value="搜索" class="button" onclick="query()"></div><input type="hidden" name="catalog_name" id="catalog_name" value="${catalog_name }"/><input type="hidden" name="price" id="price" value="${price }"/><input type="hidden" name="page" id="page" value="${result.curPage }"/><input type="hidden" name="sort" id="sort" value="${sort }"/></form></div><div id="hotwords"></div></div><!--search end--><div id="my360buy-2013"><dl><dt class="ld"><s></s><a href="/">我的京东</a><b></b></dt><dd><div class="loading-style1"><b></b>加载中,请稍候...</div></dd></dl></div><!--my360buy end--><div id="settleup-2013"><dl><dt class="ld"><s></s><span class="shopping"><span id="shopping-amount">0</span></span><a href="/cart/cart.html" id="settleup-url">去购物车结算</a> <b></b> </dt> <dd><div class="prompt"><div class="loading-style1"><b></b>加载中,请稍候...</div></div></dd></dl></div><!--settleup end--></div><!--header end--><div class="w"><div id="nav-2013"><div id="categorys-2013" class="categorys-2014"><div class="mt ld"><h2><a href="/allSort.aspx">全部商品分类<b></b></a></h2></div></div><div id="treasure"></div><ul id="navitems-2013"><li class="fore1" id="nav-home"><a href="/">⾸页</a></li><li class="fore2" id="nav-fashion"><a href="/">服装城</a></li><li class="fore3" id="nav-chaoshi"><a href="/chaoshi.html">⾷品</a></li><li class="fore4" id="nav-tuan"><a href="/" target="_blank">团购</a></li><li class="fore5" id="nav-auction"><a href="/">夺宝岛</a></li><li class="fore6" id="nav-shan"><a href="/">闪购</a></li><li class="fore7" id="nav-jinrong"><a href="/" target="_blank">⾦融</a></li></ul></div></div></div><div class="w"><div class="breadcrumb"><strong><a href="#">服饰内⾐</a></strong><span> > <ahref="#">⼥装</a> > <a href="#">T恤</a></span></div></div><div class="w main"><div class="right-extra"><div id="select" clstag="thirdtype|keycount|thirdtype|select" class="m"><div class="mt"><h1>T恤 -<strong> 商品筛选</strong></h1></div><div class="mc attrs"><div data-id="100001" class="brand-attr"><div class="attr"><div class="a-key">商品类别:</div><div class="a-values"><div class="v-tabs"><div class="tabcon"><div><a href="javascript:filter('catalog_name', '时尚卫浴')">时尚卫浴</a></div><div><a href="javascript:filter('catalog_name', '另类⽂体')">另类⽂体</a></div><div><a href="javascript:filter('catalog_name', '创意相架')">创意相架</a></div><div><a href="javascript:filter('catalog_name', '巧妙收纳')">巧妙收纳</a></div><div><a href="javascript:filter('catalog_name', '与钟不同')">与钟不同</a></div><div><a href="javascript:filter('catalog_name', '个性男⼈')">个性男⼈</a></div><div><a href="javascript:filter('catalog_name', '电脑周边')">电脑周边</a></div><div><a href="javascript:filter('catalog_name', '品质家电')">品质家电</a></div><div><a href="javascript:filter('catalog_name', '品味茶杯')">品味茶杯</a></div><div><a href="javascript:filter('catalog_name', '四季⽤品')">四季⽤品</a></div><div><a href="javascript:filter('catalog_name', '健康宝宝')">健康宝宝</a></div><div><a href="javascript:filter('catalog_name', '新潮美容')">新潮美容</a></div><div><a href="javascript:filter('catalog_name', '产品配件')">产品配件</a></div><div><a href="javascript:filter('catalog_name', '雅致灯饰')">雅致灯饰</a></div><div><a href="javascript:filter('catalog_name', '阳光车饰')">阳光车饰</a></div><div><a href="javascript:filter('catalog_name', '趣味纸抽')">趣味纸抽</a></div><div><a href="javascript:filter('catalog_name', '布艺⽑绒')">布艺⽑绒</a></div><div><a href="javascript:filter('catalog_name', '益智⼿⼯')">益智⼿⼯</a></div><div><a href="javascript:filter('catalog_name', '环保餐具')">环保餐具</a></div><div><a href="javascript:filter('catalog_name', '闪亮匙扣')">闪亮匙扣</a></div><div><a href="javascript:filter('catalog_name', '⼿机饰品')">⼿机饰品</a></div><div><a href="javascript:filter('catalog_name', '精品数码')">精品数码</a></div><div><a href="javascript:filter('catalog_name', '理财钱罐')">理财钱罐</a></div><div><a href="javascript:filter('catalog_name', '美味厨房')">美味厨房</a></div><div><a href="javascript:filter('catalog_name', '保健按摩')">保健按摩</a></div><div><a href="javascript:filter('catalog_name', '魅⼒⼥⼈')">魅⼒⼥⼈</a></div></div></div></div></div></div><div data-id="100002" class="prop-attrs"><div class="attr"><div class="a-key">价格:</div><div class="a-values"><div class="v-fold"><ul class="f-list"><li><a href="javascript:filter('price','0-9')">0-9</a></li><li><a href="javascript:filter('price','10-19')">10-19</a></li><li><a href="javascript:filter('price','20-29')">20-29</a></li><li><a href="javascript:filter('price','30-39')">30-39</a></li><li><a href="javascript:filter('price','40-49')">40-49</a></li><li><a href="javascript:filter('price','50-*')">50以上</a></li></ul></div></div></div></div></div></div><div id="filter"><div class="cls"></div><div class="fore1"><dl class="order"><dt>排序:</dt><dd><a href="javascript:sort()">价格</a><b></b></dd></dl><dl class="activity"><dd></dd></dl><div class="pagin pagin-m"><span class="text"><i>${result.curPage }</i>/${result.pageCount }</span> <a href="javascript:changePage(-1)" class="prev">上⼀页<b></b></a><a href="javascript:changePage(1)" class="next">下⼀页<b></b></a></div><div class="total"><span>共<strong>${result.recordCount }</strong>个商品<span class="clr"></span></div></div><!--商品列表开始--><div id="plist" class="m plist-n7 plist-n8 prebuy"><ul class="list-h"><c:forEach var="item" items="${result.productList }"><li pid="${item.pid }"><div class="lh-wrap"><div class="p-img"><a target="_blank" href="#"><img width="220" height="282" class="err-product" src="<c:url value='/images'/>/${item.picture}"></a></div><div class="p-name"><a target="_blank" href="#">${ }</a></div><div class="p-price"><strong>¥<fmt:formatNumber value="${item.price}" maxFractionDigits="2"/></strong><span id="p1269191543"></span> </div></div></li></c:forEach></ul></div><!--商品列表结束--></div><div class="left"><div id="sortlist" clstag="thirdtype|keycount|thirdtype|sortlist"class="m"><div class="mt"><h2>服饰内⾐</h2></div><div class="mc"><div class="item current"><h3><b></b>⼥装</h3><ul><li><a href="/1315-1343-1355.html">T恤</a></li><li><a href="/1315-1343-1354.html">衬衫</a></li><li><a href="/1315-1343-1356.html">针织衫</a></li><li><a href="/1315-1343-9713.html">雪纺衫</a></li><li><a href="/1315-1343-9710.html">卫⾐</a></li><li><a href="/1315-1343-9714.html">马甲</a></li><li><a href="/1315-1343-9719.html">连⾐裙</a></li><li><a href="/1315-1343-9720.html">半⾝裙</a></li><li><a href="/1315-1343-9715.html">⽜仔裤</a></li><li><a href="/1315-1343-9717.html">休闲裤</a></li><li><a href="/1315-1343-9716.html">打底裤</a></li><li><a href="/1315-1343-9718.html">正装裤</a></li><li><a href="/1315-1343-9711.html">⼩西装</a></li><li><a href="/1315-1343-9712.html">短外套</a></li><li><a href="/1315-1343-9708.html">风⾐</a></li><li><a href="/1315-1343-9706.html">⽑呢⼤⾐</a></li><li><a href="/1315-1343-9707.html">真⽪⽪⾐</a></li><li><a href="/1315-1343-9705.html">棉服</a></li><li><a href="/1315-1343-3983.html">⽻绒服</a></li><li><a href="/1315-1343-9722.html">⼤码⼥装</a></li><li><a href="/1315-1343-9721.html">中⽼年⼥装</a></li><li><a href="/1315-1343-9723.html">婚纱</a></li><li><a href="/1315-1343-11985.html">打底衫</a></li><li><a href="/1315-1343-11986.html">旗袍/唐装</a></li><li><a href="/1315-1343-11987.html">加绒裤</a></li><li><a href="/1315-1343-11988.html">吊带/背⼼</a></li><li><a href="/1315-1343-11989.html">⽺绒衫</a></li><li><a href="/1315-1343-11991.html">短裤</a></li><li><a href="/1315-1343-11993.html">⽪草</a></li><li><a href="/1315-1343-11996.html">礼服</a></li><li><a href="/1315-1343-11998.html">仿⽪⽪⾐</a></li><li><a href="/1315-1343-11999.html">⽺⽑衫</a></li><li><a href="/1315-1343-12000.html">设计师/潮牌</a></li></ul></div><div class="item"><h3><b></b>男装</h3></div><div class="item"><h3><b></b>内⾐</h3></div><div class="item"><h3><b></b>服饰配件</h3></div></div></div><div id="limitBuy"><div id="limitbuy9199"clstag="thirdtype|keycount|thirdtype|limitbuy536"class="m limitbuy hide"><div class="mt"><h2>服饰鞋帽</h2></div><div class="mc"><div id="clock9199" class="clock">正在加载…</div><div id="limit9199"></div></div></div></div><div id="ad_left" reco_id="6" class="m m0 hide"></div><!--⽤户最终购买--><div id="finalbuy" class="hide m m0" style="display: block;"><div class="mt"><h2>浏览<font color="red">T恤</font>最终购买</h2></div><div class="mc"></div></div><div id="weekRank" clstag="thirdtype|keycount|thirdtype|mrank"class="m rank"><div class="mt"><h2>⼀周销量排⾏</h2></div><div class="mc">。
实现分布式搜索引擎Solr如何实现分布式搜索引擎Solr搜索引擎是现代互联网最重要的应用之一,它通过分析文本内容建立索引,以便尽快地检索与搜索文本匹配的文档。
Solr 是Apache 开源基金会的一款流行的搜索引擎,可用于建立网站、应用程序和其他系统的文本搜索功能。
但是,随着 Solr 使用的所涉及的数据量的不断增加,单节点 Solr 的检索吞吐量逐渐下降。
此时,分布式 Solr 的使用便可以提升检索速度和搜索效果。
本文将介绍如何利用 SolrCloud 实现分布式搜索引擎 Solr。
一、SolrCloud 概述SolrCloud 是 Solr 的分布式架构, SolrCloud 的特点是具有需要扩展性、高可用性和容错能力的分布式特点。
通过进行分布式部署,SolrCloud 可以水平扩展搜索索引。
SolrCloud 中的 Solr 节点共同提供搜索服务,每个节点都是相互通信并交换信息的。
由于SolrCloud 是 Solr 实现分布式搜索的最佳方式,因此本文只介绍SolrCloud 的分布式搜索实现。
二、SolrCloud 的设计SolrCloud 架构由多个服务器节点组成,它们相互间通过快速的网络链接进行直接通信。
SolrCloud 的分布式索引设计基于分片,将原先单一的索引划分为多个分片,每个分片都可以部署在不同的 Solr 节点上。
当 SolrCloud 接收到搜索查询时, SolrCloud 可以自动将查询分发到不同的 Solr 节点,获取结果后合并最终数据到一起并返回。
在 SolrCloud 中,还有一部分组件需要了解,包括以下关键组成部件:1. 用户请求处理和索引处理SolrCloud 中的用户请求会发送给 Solr 节点,节点通常位于相应的应用程序的最前端,处理这些请求所需的配置文件和处理方式类似 Solr 单节点处理请求所需的配置文件和处理方式。
Solr 索引处理组件(SolrIndexingComponent)负责管理索引,索引负责将 Solr 节点中数据文档的内容提供给用户检索。
Solr在电子商务网站中的应用的开题报告
一、选题背景和意义
随着电子商务的快速发展,越来越多的电子商务网站涌现出来,如
淘宝、京东等。
这些网站的特点是要处理大量的数据,而搜索功能是其
极为重要的一个组成部分。
Solr是一种基于Lucene的开源搜索引擎,拥有快速、稳定、可扩展等特点,受到越来越多的网站使用。
本文旨在探
讨Solr在电子商务网站中的应用,探究其优点和实现方法,提高电子商
务网站的搜索效率和用户体验。
二、选题内容和研究方法
1. Solr的基础知识和特点。
2. Solr在电子商务网站中的应用场景,包括商品搜索和推荐等。
3. 以电子商务网站为例,探究Solr的搜索实现方法,包括索引构建、查询优化和结果排序等。
4. 以电子商务网站为例,探究Solr的推荐实现方法,包括内容过滤、协同过滤和基于标签的推荐等。
5. 实验和数据分析,对比Solr和其他搜索引擎的搜索效率和用户体验。
研究方法:文献综述法、实证分析法。
三、预期成果和创新性
1. 掌握Solr在电子商务网站中的应用原理和方法。
2. 实现电子商务网站的基于Solr的搜索和推荐功能,提高用户体验和搜索效率。
3. 对比Solr和其他搜索引擎的搜索效率和用户体验,对Solr的应用价值进行评估。
4. 创新性在于将Solr引入电子商务网站的搜索和推荐领域,探究其潜在的应用价值。
Solr的应用场景分析Solr是一个基于Java的搜索引擎,被广泛应用于Web搜索、文档管理、电商等各种应用场景。
本文将从Solr的特性入手,探讨其主要应用场景及其优势。
一、高效搜索引擎Solr的核心特性是高效搜索引擎,它能够处理大量的数据,并且具有快速的搜索速度。
因此,Solr适用于大型网站、Web应用程序以及企业级应用程序等各种情况下的搜索引擎。
1、电子商务在电子商务行业,Solr可以帮助电商网站提供快速、精准的搜索体验,减少用户的等待时间,促进转化率。
Solr具有高效的搜索速度以及高质量的搜索结果,可以根据用户的搜索需求,实现智能联想、拼写检查等搜索辅助功能,提高用户体验。
另外,Solr还支持基于地理位置的搜索,比如可以按照用户所在地域,展示用户附近的产品信息,大大提升用户的便利性。
2、企业应用程序在企业应用程序中,Solr也经常被用作搜索引擎,能够搜索企业内存储的各种数据,例如产品信息、客户、工程文件等。
Solr提供了高度灵活的搜索体验,用户可以通过各种搜索参数,实现快速、准确地检索所需的数据。
二、文档管理系统Solr不仅仅是一个搜索引擎,同时也是一个强大的文档管理系统,支持各种数据格式的索引和搜索。
因此,Solr可以被广泛应用于文档管理系统,帮助用户快速准确的检索所需文件。
1、数字资料库Solr可以作为数字资料库的一部分,能够实现全文检索和查询,而不仅仅是简单的关键字检索。
数字资料库包括了各种类型的文件,例如PDF文件、Microsoft Office文件、HTML文件等,Solr可以基于这些文件的内容建立索引,并实现快速准确的搜索功能。
2、知识管理系统Solr可以作为一个知识管理系统的组件,帮助企业组织内部的知识库。
当员工需要查询某种信息时,Solr可以搜索企业内多种数据源的内容,并返回相关的结果。
此外,Solr还具有自动标记、选取等功能,能够帮助企业快速实现知识共享,提高工作效率。
基于Solr的数据检索技术研究程知群;章超;韩高帅【摘要】针对海量过车数据检索困难的问题,设计了一款基于Solr的大规模分布式数据检索系统.前端IPC采集的数据经过结构化处理之后发送到后端,数据先缓存在消息队列中,再通过Spark Streaming实时计算框架对缓存的数据进行消费,将数据搬运到数据库HBase中,最后由Solr爬取HBase中的数据,根据用户的配置建立索引文件.查询时,用户通过点击Web界面下发查询条件,系统将查询条件解析为Solr 能够识别的查询语句,从索引文件中取出相应的信息,最后从HBase中取出完整的数据,返回到界面显示.测试结果表明,系统工作稳定,可存储海量多种类型数据,索引建立速度为1 000条/s,当数据库中存储一千亿条过车记录时,对此类TB级别数据进行各种条件查询的响应时间均在10 s之内.%A distributed data retrieval system is designed based on Solr.The front-end IPC collects monitor data,which sends them to the back-end after its structure processed.The data is cached in the message queue.Then it is carried to HBase by Spark Streaming the real-time calculation framework.Finally,Solr crawls data in HBase and create index file according to the user's requirement of ers issue the query through clicking the Web interface in querying.Then the system analyzes inquiry condition into inquiry sentences that can be identified by Solr.Next,Solr extract the corresponding information from the index file.Finally,the system extracts the complete data from HBase and return to display in the interface.Measurement results show that the system is stable and can store many types ofdata.Over 1 000/s of indexing speed is achieved.The response times of avariety of conditions are less than 10 seconds,when the database is stored over 100 billion car records.【期刊名称】《杭州电子科技大学学报》【年(卷),期】2017(037)001【总页数】5页(P11-15)【关键词】大数据;智能交通;Solr;索引【作者】程知群;章超;韩高帅【作者单位】杭州电子科技大学电子信息学院,浙江杭州 310018;杭州电子科技大学电子信息学院,浙江杭州 310018;杭州电子科技大学电子信息学院,浙江杭州310018【正文语种】中文【中图分类】TP319智能交通旨在将物联网技术应用于交通领域,建立一个高效且覆盖范围广的交通系统,以缓解日益恶化的交通问题所需的交通基础设施建设和建设交通基础设施高额开销之间的矛盾[1].目前,国内外都很重视智能交通系统的开发.美国已铺开了由七大系统组成的智能交通系统.欧盟也将智能交通系统纳入到发展计划之中,给相关部门提供了充足的经费用于研究和实施[2].我国道路的发展已步入世界前列,然而我们的技术尚不如西方国家那么完善,我国的智能交通系统才迸发出萌芽[3].数据检索技术是智能交通系统中的一样核心技术.道路监控每天产生海量的数据,仅浙江省一天产生的过车数据便有几亿,如何高效检索数据是现如今的一大难题.目前采用的仍然是传统的检索方式,使用数据库自带的数据检索和数据分区功能.然而在实际的数据检索中,由于数据库中所存储的信息量过于巨大.当一张数据表的数据量达到百亿甚至千亿级别,索引本身就过于巨大,索引过多还会影响到系统的性能.面对大规模数据检索时,数据库本身自带的检索功能根本无法满足实时数据检索的需求,极易照成系统的瘫痪[4].使用搜索引擎Solr能避免以上限制.搜索引擎采用了倒排索引技术,比一般的数据库索引更高效,并且Solr提供了分布式搜索的功能,能够处理各种类型的数据[5].同时Solr内部实现了分布式一致性机制,可以对Solr集群和索引文件进行一致性管理,并在数据容错和负载均衡方面都很成熟[6].但是当数据量达到一定规模时,使用Solr查询延时也比较高[7],针对该问题,本文设计了相关查询优化算法对其进行进一步的优化,使用Solr为数据库HBase提供搜索引擎服务,建立索引和查询.智能交通系统采用搜索引擎技术能够大幅度提高查询效率和系统稳定性,并且系统易于扩展,方便未来交通系统的发展.1.1 总体框架本文设计的系统主要由3部分构成:索引建立模块、数据检索模块和用户搜索界面,系统总体框架如图1所示.索引建立模块负责过滤输入的脏数据并进行格式转换,根据索引配置文件建立索引;数据检索模块负责解析查询条件,返回查询结果;用户搜索界面用于用户下发检索条件信息的可视化.1.2 索引建立Solr是建立索引过程中的核心组件,是一个高并发、高效率的企业级搜索引擎.通过配置Schema.xml和SolrConfig.xml对索引进行配置.前者定义索引字段及字段类型,并指定unique_id唯一标识一条数据.后者设置突出显示、分类、搜索以及其他请求等功能.在索引操作时,需要调用分词器提取词汇以加快检索.基于数据内容,系统选择使用空白分词器,索引设置为按月分段,定义缓存5 000条数据或者每隔5 s对输入的数据进行索引.考虑到服务器的性能、前端发送数据速度和Solr建索引速度不匹配的问题,为了保证系统能稳定工作,将建立索引的速度控制在合理的范围之内,否则将造成系统的不稳定甚至崩溃.为此,本文设计的系统引入了消息队列来缓存输入的数据,再通过实时流式计算框架Spark Streaming从消息队列中消费数据,保障数据零丢失及系统的稳定运行.1.3 数据检索用户通Web界面下发查询条件,条件包含了检索字段、排序条件、时间跨度等信息.首先判断条件的正确性,避免出现未建立索引的字段,接着将其转换成Solr能够识别的查询条件.根据条件中的时间范围,定位到所需要查询的索引段,然后顺序遍历所有段,找出段内符合条件的结果集,最后对结果集进行排序.根据结果集取出数据库中相应的数据返回给用户界面.但当结果集过大时,对结果集进行排序会相当耗时,并且对服务器性能要求也很高,无法满足系统快速响应的要求.为此本系统引入了一种压缩查询时间的方法,通过对时间条件的紧缩,从而减小了结果集的数据规模,提升了查询和排序的效率.对时间条件的紧缩是通过实时流式计算工具统计过车数据,构建查询的总数预测模型,通过对时间条件的多次紧缩,减少了查询排序的数据输入规模,提升了查询排序的速度.例如,已知一个时间段内的总的过车量为100条,而浙A车牌的出现的概率为80%,车身颜色为黑的出现概率为80%,那么在该时间段内查询浙A车牌且为黑色的过车总数为100×80%×80%=64,故将查询时间修改为查满64条的截止时间.以10亿条过车数据为例,通过优化后,平均查询时间为原来的15%~20%,精确查询耗时在1 s以内,模糊多条件查询耗时在2 s以内.以上查询方法的优化仍不能满足超大规模数据量快速响应的需求,因此本文又设计了一种分Core的查询方式.Solr中一个Core表示某种类型数据的索引文件,并且单个Core容量有限,所以无法处理超大规模的数据.结合服务器多核低主频的特点,本文设计了一种自称分Core技术的方法,通过编码的方式,对特定的索引建立一套命名规则,动态地建立一系列的Core,因为多核服务器的核数量决定了查询线程的数量,所以可以同时起多个线程分别去对应的Core中进行查询.同时,当一个Core中的数据打满时,还会动态地建立一个新的Core,然后将数据打入到新Core中,加快了查询速度.通过以上两种方法的结合使用,极大提高了查询的速度和准确度,提升了用户的体验感.索引建立和检索流程如图2所示.2.1 索引建立速度储存一亿条数据在数据库中,数据所占的空间大小为4.32 GB,启用24条线程爬取表中数据,查看索引建立的速度.根据建立的Core的数目不同及爬取数据的快慢,确定建索引的最佳Core数,测试结果如表1所示.由表1测试数据可以看出,Core的数目选择在8时,爬取数据表建立索引的速度比较快.虽然选择在建立10个Core时速度更快,但是过多的Core会导致Solr的稳定性下降,而且系统中不止一种应用,所以本文选择建立8个Core,即一张表的索引数据存在8个Core中.2.2 数据查询速度数据库中存储了一千亿条过车记录,验证在不同查询条件下系统的响应时间.假如时间范围够大,涉及到查询多个Core中数据,对性能有所影响.这里设置了两种查询条件,一种是只带了时间范围的单条件查询;还有一种是除了时间范围之外,还设置了其他的过滤条件的多条件查询.测试结果如表2所示.由表2中的数据可以看出,不管是单条件查询和多条件查询,跨越Core的数目越多,查询的性能越差,所以在单个Core中存放的数据不宜过小.而且在跨越Core数目相同的情况下,单条件查询的响应时间要优于多条件查询的响应时间,但是都不会超过10 s,满足了系统要求的性能.而如果只是单纯地使用数据库自带的检索功能查询,在如此大规模数据量的情况下,将直接报查询超时错误,不会返回任何结果.2.3 数据查询准确率在不同数据量的情况下,使用多条件查询,查看返回结果的准确率.测试结果如表3所示.由表3中的数据可以看出,多条件查询在任何数据量的情况下,对于结构化数据检索搜索引擎都能百分之百地返回满足条件的数据,不会出现不符合查询条件的返回结果,故本系统能够实现精确查询.本文基于交通领域应用场景的实际需求,在对Solr分布式索引技术进行深入研究分析的基础上,设计了Solr分Core算法和时间紧缩算法,实现了大规模海量过车数据存储与检索系统.通过实验验证了系统检索的高效性,满足智能交通快速响应的需求.然而,系统仍然存在一些不完善之处,对海量数据进行相关挖掘以获取数据背后的信息将是后续研究的重点.【相关文献】[1]HERRERA-QUINTERO L F, JALIL-NASER W D, BANSE K, et al. Smart cities approach for Colombian Context. Learning from ITS experiences and linking with government organization[C]//Smart Cities Symposium Prague (SCSP), 2015. IEEE, 2015: 1-6.[2]刘小明,何忠贺.城市智能交通系统技术发展现状及趋势[J].自动化博览,2015(1):58-60.[3]SHI Z, ZOU Z, ZHANG C. Real-Time Traffic Light Detection With Adaptive Background Suppression Filter[J]. IEEE Transactions on Intelligent Transportation Systems, 2016, 17(3): 690-700.[4]WANG D, HOI S C H, HE Y, et al. Retrieval-based face annotation by weak label regularized local coordinate coding[J]. IEEE transactions on pattern analysis and machine intelligence, 2014, 36(3): 550-563.[5]蔡宇晶,孙玫肖,朱建军.Solr在乐龄易购网站中的应用[J].铁路计算机应用,2016,25(10):53-56.[6]牛涛.建立基于Solr平台的质量信息检索系统[J].电子科学技术,2016(5):590-593.[7]VOORHEES E M, OVER P, SOBOROFF I. Building Better Search Engines by Measuring Search Quality[J]. IT Professional, 2014, 16(2): 22-30.。
基于Solr的企业级搜索引擎的设计【摘要】分散的计算机上存储有大量的信息,企业级用户急需一种工具对这些零散的信息进行统一的查找,最好还可通过配置对特定的网站进行检索,这就是企业级搜索引擎,本文使用开源项目Solr设计了一款面向企业的搜索引擎。
整体设计基于SSH设计框架实现;服务器端采用Heritrix抓取网页,加入IKAnalyzer增加中文分词功能;客户端采用Ajax技术实现异步通信,优化用户体验。
【关键词】Solr;Heritrix;SSH;企业级;搜索引擎1.研究背景随着Intenet的普及与企业信息化步伐的不断加快,在企业信息化的发展趋势下,越来越多的企业广泛地应用Intemet技术实现数据共享、业务集成与信息发布,信息内容也正在以惊人的速度增加。
文件、图片、多媒体等非结构化数据存放零散,而企业内部业务系统有大量的结构化数据,如报表与业务功能,有时候要找到它们如同大海捞针,如果不及时解决这个问题,很多原来有价值的信息无法得到企业的有效利用。
目前许多企业级门户网站建立搜索引擎服务通常通过调用互联网搜索引擎的搜索服务,来实现对本站点的搜索。
但是对于一个有很多子网站的企业门户网站来说,通用搜索引擎存在着很多缺陷,满足不了这种搜索服务要求,如:尽管通用引擎提供对指定站点内的查询,但是不能同时对多个站点同时查询;通用搜索引擎不能及时更新索引,会导致搜索结果不全和出现“坏链接”;调用通用搜索引擎的响应速度慢。
总之,通用搜索引擎有很广的信息采集面,深度不够,它采取的是广度优先采集策略,而企业搜索需要深入挖掘与企业相关的所有信息,因此应采用深度优先的采集策略,同时由于某些行业网站或数据库的信息是动态更新的,而且更新频率很高,需要更频繁的抓取这些信息,因此企业搜索引擎正是应这种需求而产生。
研究如何设计一个适用于企业信息检索的搜索引擎,具有重要的意义。
文中采用Struts+Spring+Solr+Heritrix+IKAnalyzer的开发工具包,进行了一个中文全文搜索引擎的设计。
基于SolrCloud的网络百科检索服务的实现郝强;高占春【期刊名称】《软件》【年(卷),期】2015(036)012【摘要】网络百科是一部在线百科全书,为用户提供了资源丰富、内容详实的网络查询工具.网络百科检索服务是基于SolrCloud搭建的检索平台,服务部署在集群上,具有集中式的信息配置、自动容错、近实时搜索和查询时自动负载均衡的特点.本文介绍了SolrCloud平台的搭建方案,结合数据特点设计了索引结构,增加了中文分词器和中文词表,提高了在创建索引和检索索引过程中的中文分词效果.在SolrCloud平台基础上,本文根据搜索引擎原理提出了搜索引擎优化方案,进一步提升了搜索效果.通过在创建索引时对关键字段设置多颗粒度分词模式,在检索索引时对不同颗粒度分词设置不同的权重,提高检索效果;通过挖掘数据内在的引用关系为文档质量评分,提高优质文档在搜索结果中的排名.实验数据表明,优化方法对网络百科检索服务效果有很大的提升.%Cyberpedia is an online encyclopedia with numerous data that covers many areas.Cyberpedia search ser-vice is constructed by SolrCloud which has features of centralconfiguration,automatic failover,real-time search and automatic load balancing.This paper introduces the constructure of this SolrCloud project,the design of the index structure,and the addition of the Chinese tokenizer which improves the result of word segments.Moreover,this paper discusses the search engine optimization.The key fields are segmented by a few patterns of different granularities when indexing and retrieving.Adocument is scored by the times it is cited,and the score effects the rank of the document.The experiment shows that the optimization takes good effect of the Cyberpedia search service.【总页数】5页(P103-107)【作者】郝强;高占春【作者单位】北京邮电大学计算机学院,北京 100876;北京邮电大学计算机学院,北京 100876【正文语种】中文【中图分类】TP311【相关文献】1.一种基于数据库服务的密文检索实现 [J], 宋衍;周庆;张国双;王馨2.基于SolrCloud的分布式分面信息检索系统设计与实现 [J], 黄岚;周娟3.基于SolrCloud的银行实时报表系统设计与实现 [J], 段文龙;包崇明;周丽华;孔兵4.基于Web的一站式网络服务平台——针对于高校学生多功能网络服务平台的设计与实现 [J], 黄坤;张宇昂;李岩松;李志伟(指导);5.基于SolrCloud的银行实时报表系统设计与实现 [J], 段文龙[1];包崇明[2];周丽华[1];孔兵[1]因版权原因,仅展示原文概要,查看原文内容请购买。
基于SOLR的标准内容搜索的实现与优化■ 赵东海 张文华(北京汇金数码科技有限公司)摘 要:面对海量的标准信息,信息检索成为了研究和工作人员关注的问题,尤其是非结构化数据的存储、集成和索引。
本文将Solr搜索引擎技术应用在标准内容的检索,实现针对标准化对象、具体指标等关键词的搜索,通过分词器选型和完善词表等手段,实现搜索效果的优化。
关键词:标准文献,内容搜索,SOLR优化DOI编码:10.3969/j.issn.1002-5944.2021.05.022Implementation and Optimization of Standard Content Search Based onSOLRZHAO Dong-hai ZHANG Wen-hua(Beijing Huijin Digital Technology Co., Ltd.)Abstract: Faced with massive amount of standard information, information retrieval has become a concern for researchers and staff, especially the storage, integration and indexing of unstructured data. In this paper, SOLR search engine technology is applied to the retrieval of standard content, to achieve the search for keywords such as standardized objects and specific indicators, and to optimize the search effect through the selection of the word segmenter and the improvement of the word list.Keywords: standard literature, content search, SOLR optimization标准实践1 引 言标准是科学、技术和实践经验的结晶,是组织生产的依据,是科学管理的基础[1]。
高性能分布式搜索引擎Solr的研究与实现赵璞;朱志祥;张康益【摘要】针对信息资源不断膨胀传统搜索技术无法达到高效、可靠的服务需求问题.设计并实现了一中基于Solr的高性能分布式搜索.系统通过使用Zookeeper管理集群,实现搜索模块分布式,利用Solr做索引处理,在多节点上并行创建索引,并将SolrCloud与Mongodb数据库的搭建连接,通过测试表明,系统展现了SolrCloud 对数据库搜索功能的提高效果.【期刊名称】《电子科技》【年(卷),期】2015(028)004【总页数】3页(P73-75)【关键词】Solr;SolrCloud;Zookeeper;Mongodb【作者】赵璞;朱志祥;张康益【作者单位】西安邮电大学计算机学院,陕西西安710061;西安邮电大学计算机学院,陕西西安710061;西安邮电大学计算机学院,陕西西安710061【正文语种】中文【中图分类】TP311.123随着大数据时代的到来,如何利用一种高效的查询工具从浩如烟海的信息中可以快速、简单、精确地找到所需要的信息。
搜索引擎技术在这种背景下应运而生。
现在,对于解决这个需求已经出现了很多搜索引擎的雏形。
这些雏形为用户和其它的 Web 服务提供访问。
但是他们无法做到高覆盖率、高准确度、大并发量、快速响应等需求。
而分布式搜索引擎策略,完全可以高效地解决这方面需求。
分布式搜索引擎策略就是当用户登录到任何一台服务器时,除了本地资源的检索服务器可以为客户端提供搜索服务,也可以自动连接到其它服务器,发出搜索请求,并将检索后的结果合并汇总反馈给最终用户。
在这种方式下,用户只需登录到任何一台服务器,就可从不同的服务器获取所需资源。
用户检索和获取这些资源的方式就如同检索和访问相同的服务器。
因此,研究在大数据环境下的分布式搜索引擎就显得尤为重要。
本文提出基于Solr 的高性能分布式搜索模型,模型创新之处在于,引入Zookeeper管理集群,将搜索构建成并行的分布式处理,将索引分成独立的集群组,搜索时通过相应的路由规则定位至索引信息所在的集群组,减少索引搜索时间,提高搜索性能。
基于SolrCloud的网络百科检索服务的实现摘要:网络百科是一部在线百科全书,为用户提供了资源丰富、内容详实的网络查询工具。
网络百科检索服务是基于SolrCloud搭建的检索平台,服务部署在集群上,具有集中式的信息配置、自动容错、近实时搜索和查询时自动负载均衡的特点。
本文介绍了SolrCloud平台的搭建方案,结合数据特点设计了索引结构,增加了中文分词器和中文词表,提高了在创建索引和检索索引过程中的中文分词效果。
在SolrCloud平台基础上,本文根据搜索引擎原理提出了搜索引擎优化方案,进一步提升了搜索效果。
通过在创建索引时对关键字段设置多颗粒度分词模式,在检索索引时对不同颗粒度分词设置不同的权重,提高检索效果;通过挖掘数据内在的引用关系为文档质量评分,提高优质文档在搜索结果中的排名。
实验数据表明,优化方法对网络百科检索服务效果有很大的提升。
关键词:计算机软件;搜索引擎优化;SolrCloud;中文分词中图分类号:TP311文献标识码:ADOI:10.3969/j.issn.1003-6970.2015.12.024本文著录格式:郝强,高占春.基于SolrCloud的网络百科检索服务的实现[J].软件,2015,36(12):103-1070 引言1.网络百科是一个包罗万象的在线百科全书,涉及经济、政治、文化等各个方面。
网络百科的主体为词条,分为中文和英文,由千万量级的词条构成了庞大的知识库,具有很强的知识性和科普价值,同时又鼓励用户参与创建和修改词条,使网络百科在丰富权威的同时,也具有趣味性和快更新的特点。
2.在海量的数据中,按照用户的需求高效、准确地检索出词条和同条内容是一项极具挑战的任务。
搜索引擎技术可以通过对数据文档创建索引,实现对相关查询的高效快速检索,为用户返回相当数量的排序搜索结果。
并且可以根据实际的数据特点,通过多种手段对搜索引擎的进行优化,提高搜索结果的准确率。
3.在处理大规模数据时,不但需要考虑检索的效果,也需要考虑计算机的运算能力和故障风险。
摘要随着信息时代的来临,人们的生活、学习、工作和娱乐已经与信息技术充分的融为一体。
随着群众对互联网参与度的增加和企事业单位信息化的逐步深入,信息量也成倍地增长,如何能更好地从浩如烟海的数字信息中快速、精准地查找到需要的信息,成为全国人民的迫切需求。
尤其是处于信息化建设道路上的中小企业,如何快速且廉价地开放自己的信息检索系统,对于企业的成长至关重要。
本文介绍了搜索引擎的基本原理,对搜索引擎的一些核心技术进行了介绍与深入的分析;介绍了Lucene搜索引擎工具包的架构及其基本使用;对基于开源搜索引擎包Lucene的搜索框架Solr进行架构、代码、配置等方面的研究;最后设计并实现了一个基于Solr1.3的简单可用的多库搜索引擎。
整个设计过程致力于提高管理维护的方便性和可扩展性。
关键词:L ucene;Solr;搜索引擎;爬虫;中文分词AbstractWith the advent of the information era, people's lives, study, work and entertainment have been fully integrated with information technology. With the participation of the masses on the Internet and increase in the number of information-based enterprises, the amount of information has become several times as before. How to get useful information quickly and accurately has become an important thing to everyone. For the small and medium-sized enterprises, how to develop its own message retrieval system quickly and cheaply is essential for the growth of enterprises.In this paper, we introduce the basic principles of search engine and analyses a number of core technologies. I also introduce Lucene search engine tools, its basic framework and how to use it. We analyses Solr, which is an open source search engine based on Lucene, and its architecture, code, configuration. At last, we design and implement a simple multi-database search engine based on Solr1.3.Keywords: L ucene ; Solr ; Search Engine ; Spider ; Chinese Word Segmentation目录第一章前言 (1)1.1绪论 (1)1.2开源搜索引擎研究的意义和现状 (3)第二章中文搜索引擎关键技术 (4)2.1搜索引擎基本结构 (4)2.2中文分词 (6)2.3相关排序 (9)2.4搜索引擎响应速度 (13)2.5网络蜘蛛 (14)第三章开源搜索引擎SOLR (16)3.1搜索引擎包L UCENE (16)3.1.1Lucene简介 (16)3.1.2Lucene与Solr的关系 (16)3.1.3Lucene的结构 (17)3.1.4Lucene的使用 (18)3.1.5Lucene的评分公式 (22)3.1.6Lucene的搜索结果排序 (23)3.2S OLR的介绍 (24)3.2.1Solr的特点与优势 (24)3.2.2Solr1.3的新特性 (25)3.3S OLR的配置和使用 (25)3.3.1Solr1.3服务器的部署 (25)3.3.2Solr1.3体系结构图 (26)3.3.3solr.xml配置文件 (27)3.3.4schema.xml配置文件 (27)3.3.5solrconfig.xml配置文件 (29)3.3.6查询HTTP接口参数 (32)3.4S OLR1.3的核心机制 (32)3.4.1内核调用机制 (32)3.4.2分库机制 (33)3.4.3缓存机制 (33)第四章基于SOLR的搜索引擎总体设计 (35)4.1设计背景和原则 (35)4.2整体结构与模块关系 (35)第五章基于SOLR的搜索引擎详细设计与实现 (37)5.1网络蜘蛛模块的设计与实现 (37)5.2N EW API模块的设计与实现 (38)5.3管理模块的设计与实现 (39)5.4配置文件的配置 (39)5.5分词模块的设计与实现 (40)5.6查询模块的设计与实现 (41)第六章结论 (43)参考文献 (44)致谢 (45)第一章前言1.1绪论随着信息技术的不断发展和人民对信息技术需求的不断增加,世界各国都在经历着前所未有的信息革命。
国家的发展离不开信息化,企业的发展离不开信息化,个人的工作、生活、学习和娱乐更是离不开信息化。
今日的中国也在跟随时代的步伐向着信息时代迈进,而且呈现出巨大的生机与活力,这是一个庞大的市场。
信息革命的深入必然带来信息的爆炸性增长。
据中国互联网信息中心(CNNIC)统计,截止2008年12月31日,中国已有网民数量2.98亿,网站287.8万个[18]。
如此巨大的信息聚集必然导致有效信息获取的难度增强和垃圾信息量增加。
于是,快速精准地获取有用信息的工具应运而生。
通用的搜索技术有数据库技术和搜索引擎技术,文献3[3]中比较了两者的差别。
搜索引擎是信息检索的工具,因此对搜索引擎的研究应属于信息检索的分支。
搜索引擎是帮助用户快速精准地从庞大的信息体中搜索到所需信息的工具,其诞生至今不过10多年的时间而已,不过其发展却非常迅速。
表1-1总结搜索引擎发展历史上一些具有里程碑意义的事件,以求从整体上了解搜索引擎的发展历史。
国内搜索引擎的研究相对国外较晚,不过搜索引擎在国内仍然取得了不少成绩。
研究领域,北京大学开发出北京大学天网搜索引擎,并提出中文搜索引擎研发的许多方法和思想(文献8[8]有相关介绍)。
在商业领域,百度已经成为了世界上使用人数最多的中文搜索引擎。
有学者认为:现代搜索引擎建立在互联网和诸多计算机技术之上,所以很难将搜索引擎的缘起与哪个具体的产品对应起来[1]。
而且,在搜索引擎的发展演化过程中,出现过许多不同种类的搜索引擎,谢新洲主编的《网络信息检索技术与案例》[2]一书中按照信息组织方式将搜索引擎分成如下三类。
(1)目录式搜索引擎目录式搜索引擎依靠人工发现信息,并依靠标引人员自身的知识对信息进行分类、提取主题词、建立关键字索引和目录分类体系。
用户可以通过两种方式来使用。
一种是浏览查询,从最高层目录开始,顺着目录树逐层深入,直到找到所需信息为止;另一种是通过关键词检索。
这类搜索引擎具有检索效率高的有点,但索引建立的效率却比较低,信息更新也比较慢。
目录式搜索引擎的例子有Yahoo和新浪分类目录。
(2)索引式搜索引擎索引式搜索引擎依靠一个被称作蜘蛛(Spider)或机器人(Robot)的程序,根据特定网络协议和原则,自动地从互联网上获取信息来建立索引。
并采用一定得方法对索引库进行更新,以确保索引库与互联网上信息的实时对应。
这类搜索引擎主要依靠程序自动地搜集和维护信息,从而将标引人员解放出来,同时索引库可以比较大,实时性也更强。
著名的索引式搜索引擎有Google,百度等。
(3)元搜索引擎元搜索引擎也叫集合式搜索引擎,它将多个搜索引擎集中起来,提供统一的检索界面给用户。
因此元搜索引擎可以理解为一个经过包装的搜索引擎群体。
元搜索引擎有两种工作方式,一种是并行式元搜索引擎,另外一种是串行式元搜索引擎。
并行式元搜索引擎在用户提交查询词后,同时将查询请求发往多个搜索引擎,在接收到各个搜索引擎返回的结果后,根据一定得排序算法重新排序后返回给用户。
串行式元搜索引擎仅提供一个搜索引擎的列表,由用户选择使用哪个搜索引擎来进行查询,因此它可以说是“搜索引擎的搜索引擎”[2],帮助用户进行搜索引擎的选择。
尽管搜索引擎分类众多,但其基本思想是一致的。
图1-1展示了搜索引擎的基本思想。
首先搜集目标信息,然后将信息进行分析处理,并按照一定得数据结构进行存储,最后用户从这些被存储的数据中检索出有用的信息。
1.2开源搜索引擎研究的意义和现状开源搜索引擎的研究具有极其重大的意义。
首先,由于只有很少的人能够接触大型商业搜索引擎,所以大部分人游离在专业搜索引擎技术之外,开源搜索引擎无疑为人们学习和研究搜索引擎技术提供了极好的途径。
再者,开源搜索引擎能够吸引更多人贡献自己的才智,这必将会推动搜索引擎技术的进步。
从市场的角度来说,越来越多的企业对搜索技术有迫切的需求,这些需求有极强的差异,例如,有的需要的是对文档的搜索,有的需要对网页的搜索等等。
这些企业中,大部分是中小企业,他们无力组建自己的开发团队来开发搜索引擎,同时也不可能花巨资购买专业化的搜索引擎,他们只希望花最少的钱来满足自己的需要。
这时候,开源的搜索引擎既帮了企业的忙,也帮了开发人员的忙,开发人员可以通过开源搜索引擎快速地开发出廉价的个性化的搜索引擎,这样的搜索引擎无疑会得到企业更多的青睐。
开源搜索引擎在开源的潮流和搜索引擎迫切的需求中诞生,经过多年的发展,已经取得了许多成绩。
这一领域最为流行的是Lucene家族,它以Lucene库为基础派生出许多知名的搜索引擎:Nutch、Solr、Compass、LIUS等。
其中Nutch是以Lucene 为基础的Web搜索引擎,利用它可以快速地搭建像Google一样的搜索引擎;Solr是Lucene基础上的一个搜索引擎框架,通过对其配置,可以实现许多强大的功能,而且索引和查询的效率都极高,利用它开发个性化的搜索引擎是不错的选择;Compass 也是一个以Lucene为基础的搜索引擎架构,它提供比Lucene更加简洁的API,使用它与Hibernate、Spring等进行集成是个很好的选择;LIUS(Lucene Index Update and Search)也包装Lucene的一个库,它是一个针对文本索引的框架,可以对MS WORD、PDF、MS EXCEL、TXT等文本进行处理。