- 浏览: 61507 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (117)
- RPC相关 (4)
- mvc_controller (3)
- mvc_model (3)
- maven (4)
- mvc_view (5)
- IO (2)
- 业务相关 (2)
- MQ (7)
- 搜索引擎 (3)
- zookeeper (2)
- 工具相关 (4)
- 编辑错误 (1)
- tomcat (1)
- 单元测试 (1)
- 负载均衡 (1)
- ubuntu (1)
- nginx (1)
- dubbo (2)
- 网络站点分发 (1)
- 电商-支付相关 (10)
- 电商订单业务相关 (3)
- Core java1 (3)
- Core Java (12)
- 多线程高并发(并发包/线程/锁) (10)
- 数据库+缓存 (17)
- springcloud (2)
- jvm (5)
- 日志相关 (1)
- 算法 (3)
- spring (2)
- 分布式一致性算法 (1)
最新评论
前期认识
1.lucence:jar包 组成组件 它不是一套完整搜索引擎服务,他里面提供了很多
一些概念方面的抽象,是没有具体实现
2.solr是一种全文搜索引擎,是一套完整的企业级分布式搜索和搜索引擎
是一个企业级,电商平台全文搜索。
国内知名电商平台搜索各种数据 nosql,数据变化不大不像附近人在变,毕竟固定。
全文检索
命中表示
分页搜索
动态聚类
数据集成
富文本处理
高扩展
3.es(Elasticseach)是一种基于lucence的搜索引擎,他和solr区别在于,solr是对已有
各种数据的检索非常稳定高效,es主要是在做实时搜索,搜索的数据量可能随便
变化,他是比solr效率高
es像一些社交软件 随时搜索附近的人
一.下载获取solr 构建我们自己solr搜索平台
http://archive.apache.org/dist/lucene/solr
solr-4.10.3.zip windows
solr-4.10.3.tgz linux
二.solr服务整体结构
http://www.cnblogs.com/HD/p/3977799.html
2.1 运行war
solr-4.10.3/example/webapps/solr.war 在tomcat下webapp运行启动war包,获取solr文件
2.2 配置web.xml
回到tomcat的webapps目录下,记事本打开solr\WEB-INF\web.xml文件。
加入如下代码:在<web-app />节点内的最后。
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-entry/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
2.3 配置solrhome文件
solr-4.10.3\example\solr,复制所有内容到 solr配置模块 /usr/local/solr-entry/solrhome
2.4 拷贝jar包
打开文件夹:solr-4.10.3\example\lib\ext,复制所有jar包到 tomcat的solr项目下 的webapps\solr\WEB-INF\lib下。
2.5 运行 solr服务平台
localhost:8081/solr/
三.我们用solr分词(IKAnalyzer中文分词器)
分词前要有jar包支持:ik分词插件,
IKAnalyzer2012FF_u1.jar可扩展的插件
用来分词的工具包,这个工具包有支持lucene的接口,所以用它来做分词,分词汉语一句话根据主谓宾智能判断出来。
3.1.IKAnalyzer2012FF_u1.jar 包放到 [b]tomcat的solr项目下 tomcat/webaaps/solr/WEB-INF/lib/IKAnalyzer2012FF_u1.jar [/b] 注:IKAnalyzer2012_u6.jar或其他版本会有问题。
3.2.检索配置文件
ex_stopword.dic 中文词库
IKAnalyzer.cfg.xml 扩展配置文件
mydict.dic 中文词语库
以上三个文件网上下载后放到如下路径
tomcat/webaaps/solr/WEB-INF/classes/
3.3 配置solrhome配置模块,修改schema.xml文件
与其它分词器的配置大体相同,在<types></types>配置项间加一段如下配置:
最后就可以使用text_ik了
另:solr默认分词器
智能分词 像人一样智能判断一条语句的主谓宾
我喜欢白富美 =>我|喜欢|白|富|美
经常更新词库
大数据云计算:洞悉先机(每一个人的心里喜好都有被某知名电商平台分析过,只要是他们的会员)
大数据企业 索引(直接拥有)
四.solr与电商
电商平台用solr全文检索 模块
简单介绍
a.简单检索
页面检索:
java solrj客户端检索
b.复杂检索
简单检索:
Dataimport这个功能 将数据库solr的电商数据 全部solr索引到我们的真实数据库。
Dataimport功能各种类型的数据 映射 到我们的服务solr。
索引(直接拥有数据的地址)里面id,查询非常
数据库的数据不是存在solr服务里,
4.1 建立映射
4.1.1 添加jar包到tomcat的solr项目
solr-4.10.3/dist/solr-dataimporthandler-4.10.3.jar 引入到solr服务中:
加入到apache-tomcat\webapps\solr\WEB-INF\lib
4.1.2 配置solrconfig.xml(配置dataimport handler)
以上代码配置加入到 /usr/local/solr-entry/solrhome/conllection1/conf/solrconfig.xml
添加位置根据自己的习惯,便于查找即可,我这里放到系统内置最后一个handler,replication之下。
注:solrconfig.xml 还需要mysql-connector-java-5.1.36.jar驱动包
4.1.3 添加mysql-data-config.xml文件(配置数据源)
添加mysql-data-config.xml文件,映射到数据库
dataSource节点配置:
name: dataSource的名称,配置文件可以有多个datasource,使用name区分。
type:数据源类型,如JDBC
driver:数据库驱动包,去提前放到lib目录下
url:数据库连接url
<field>字段配置:
column:数据库查询列名称
name:Schema.xml中的字段
文件位置:
column与name对应
注:product_name作为搜索字段,需要设定type="text_ik",不然做不到分词查询。
4.1.4 修改schema.xml文件(配置数据源)
添加field name属性,此属性对应mysql-data-config.xml的<field name的值 :
以上配置完成
4.1.5 执行创建索引
再次启动solr:
启动成功,把mysql创建索引到doc文件:
查询doc:
取得的是mysql的数据:
以上配置完成,可以结合spring java代码实现电商plp商品列表加载solr索引信息了。
4.1.6 配置solr日志
有些问题在tomcat无法打印出日志,不方便查出原因,配置solr日志,可查找solr出的问题:
在tomcat的solr工程下添加日志属性文件
在tomcat/webapps/solr/WEB-INF/lib 下查看之前导入过的日志jar包:
运行后出现日志文件 tomcat/bin/logs/solr.log:
可能出现错误:
在solr建立索引的时候,如果你提交的doc中没有 id 这个Field,结果Solr在建立索引时候出现如下错误:
主要是因为Solr 的solrconfig配置文件中定义了<uniqueKey>id</uniqueKey>,默认了ID 是唯一的。
如果你的索引字段不需要ID,就可以把这个改掉.
并将id字段里的required="true"属相,
添加到kwid字段。
其他细节:
组合域
多域组合查询
明细化控制
命中表示
动态聚类
富文本处理
数据集成
web应用使用solr总体思路: java服务器映射到solr服务(httpSolrServer),solr的web.xml映射到entry solrhome实体数据(实体配置模块),solr实体数据映射数据库。
电商中应用:分页,返回plp对象list,且设置好高亮显示。
参考:
属性定义http://www.cnblogs.com/rainbowzc/p/3695058.html
结合solr服务实现搜索引擎的java代码
http://572327713.iteye.com/blog/2360936
http://www.cnblogs.com/easong/p/6258280.html
http://www.w2bc.com/article/204862
1.lucence:jar包 组成组件 它不是一套完整搜索引擎服务,他里面提供了很多
一些概念方面的抽象,是没有具体实现
2.solr是一种全文搜索引擎,是一套完整的企业级分布式搜索和搜索引擎
是一个企业级,电商平台全文搜索。
国内知名电商平台搜索各种数据 nosql,数据变化不大不像附近人在变,毕竟固定。
全文检索
命中表示
分页搜索
动态聚类
数据集成
富文本处理
高扩展
3.es(Elasticseach)是一种基于lucence的搜索引擎,他和solr区别在于,solr是对已有
各种数据的检索非常稳定高效,es主要是在做实时搜索,搜索的数据量可能随便
变化,他是比solr效率高
es像一些社交软件 随时搜索附近的人
一.下载获取solr 构建我们自己solr搜索平台
http://archive.apache.org/dist/lucene/solr
solr-4.10.3.zip windows
solr-4.10.3.tgz linux
二.solr服务整体结构
http://www.cnblogs.com/HD/p/3977799.html
2.1 运行war
solr-4.10.3/example/webapps/solr.war 在tomcat下webapp运行启动war包,获取solr文件
2.2 配置web.xml
回到tomcat的webapps目录下,记事本打开solr\WEB-INF\web.xml文件。
加入如下代码:在<web-app />节点内的最后。
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-entry/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
2.3 配置solrhome文件
solr-4.10.3\example\solr,复制所有内容到 solr配置模块 /usr/local/solr-entry/solrhome
2.4 拷贝jar包
打开文件夹:solr-4.10.3\example\lib\ext,复制所有jar包到 tomcat的solr项目下 的webapps\solr\WEB-INF\lib下。
2.5 运行 solr服务平台
localhost:8081/solr/
三.我们用solr分词(IKAnalyzer中文分词器)
分词前要有jar包支持:ik分词插件,
IKAnalyzer2012FF_u1.jar可扩展的插件
用来分词的工具包,这个工具包有支持lucene的接口,所以用它来做分词,分词汉语一句话根据主谓宾智能判断出来。
3.1.IKAnalyzer2012FF_u1.jar 包放到 [b]tomcat的solr项目下 tomcat/webaaps/solr/WEB-INF/lib/IKAnalyzer2012FF_u1.jar [/b] 注:IKAnalyzer2012_u6.jar或其他版本会有问题。
3.2.检索配置文件
ex_stopword.dic 中文词库
IKAnalyzer.cfg.xml 扩展配置文件
mydict.dic 中文词语库
以上三个文件网上下载后放到如下路径
tomcat/webaaps/solr/WEB-INF/classes/
3.3 配置solrhome配置模块,修改schema.xml文件
与其它分词器的配置大体相同,在<types></types>配置项间加一段如下配置:
<!-- 配置中文分词器fieldType TextField和lucene是不一样的 --> <fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
最后就可以使用text_ik了
<!-- 配置中文分词Field --> <field name="hailong_name" type="text_ik" indexed="true" stored="true" /> <field name="product_name" type="text_ik" indexed="true" stored="true" />
另:solr默认分词器
<!-- A general text field that has reasonable, generic cross-language defaults: it tokenizes with StandardTokenizer, removes stop words from case-insensitive "stopwords.txt" (empty by default), and down cases. At query time only, it also applies synonyms. --> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <!-- in this example, we will only use synonyms at query time <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> --> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
智能分词 像人一样智能判断一条语句的主谓宾
我喜欢白富美 =>我|喜欢|白|富|美
经常更新词库
大数据云计算:洞悉先机(每一个人的心里喜好都有被某知名电商平台分析过,只要是他们的会员)
大数据企业 索引(直接拥有)
四.solr与电商
电商平台用solr全文检索 模块
简单介绍
a.简单检索
页面检索:
java solrj客户端检索
b.复杂检索
简单检索:
Dataimport这个功能 将数据库solr的电商数据 全部solr索引到我们的真实数据库。
Dataimport功能各种类型的数据 映射 到我们的服务solr。
索引(直接拥有数据的地址)里面id,查询非常
数据库的数据不是存在solr服务里,
4.1 建立映射
4.1.1 添加jar包到tomcat的solr项目
solr-4.10.3/dist/solr-dataimporthandler-4.10.3.jar 引入到solr服务中:
加入到apache-tomcat\webapps\solr\WEB-INF\lib
4.1.2 配置solrconfig.xml(配置dataimport handler)
<!-- add by hailong 20170308 --> <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <!-- <str name="config">/usr/local/solr-entry/solrhome/conllection1/conf/mysql-data-config.xml</str>--> <!-- 放在同一个目录下 --> <str name="config">mysql-data-config.xml</str> </lst> </requestHandler>
以上代码配置加入到 /usr/local/solr-entry/solrhome/conllection1/conf/solrconfig.xml
添加位置根据自己的习惯,便于查找即可,我这里放到系统内置最后一个handler,replication之下。
注:solrconfig.xml 还需要mysql-connector-java-5.1.36.jar驱动包
4.1.3 添加mysql-data-config.xml文件(配置数据源)
添加mysql-data-config.xml文件,映射到数据库
<?xml version="1.0" encoding="UTF-8" ?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.92.129:3306/solr_test" user="root" password="123456"/> <document> <entity name="product" transformer="HTMLStripTransformer" query="SELECT pid, product_name, catalog_name, product_price, product_description, product_picture FROM product"> <field column="pid" name="id" /> <field column="product_name" name="product_name" /> <field column="catalog_name" name="catalog_name" /> <field column="product_price" name="product_price" /> <field column="product_description" name="description" /> <field column="product_picture" name="product_picture" /> </entity> </document> </dataConfig>
dataSource节点配置:
name: dataSource的名称,配置文件可以有多个datasource,使用name区分。
type:数据源类型,如JDBC
driver:数据库驱动包,去提前放到lib目录下
url:数据库连接url
<field>字段配置:
column:数据库查询列名称
name:Schema.xml中的字段
文件位置:
column与name对应
注:product_name作为搜索字段,需要设定type="text_ik",不然做不到分词查询。
4.1.4 修改schema.xml文件(配置数据源)
添加field name属性,此属性对应mysql-data-config.xml的<field name的值 :
以上配置完成
4.1.5 执行创建索引
再次启动solr:
启动成功,把mysql创建索引到doc文件:
查询doc:
取得的是mysql的数据:
以上配置完成,可以结合spring java代码实现电商plp商品列表加载solr索引信息了。
4.1.6 配置solr日志
有些问题在tomcat无法打印出日志,不方便查出原因,配置solr日志,可查找solr出的问题:
在tomcat的solr工程下添加日志属性文件
# Logging level log4j.rootLogger=WARN, file #- size rotation with log cleanup. log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.MaxFileSize=4MB log4j.appender.file.MaxBackupIndex=9 #- File to log to and log format log4j.appender.file.File=logs/solr.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n
在tomcat/webapps/solr/WEB-INF/lib 下查看之前导入过的日志jar包:
运行后出现日志文件 tomcat/bin/logs/solr.log:
可能出现错误:
org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: id
在solr建立索引的时候,如果你提交的doc中没有 id 这个Field,结果Solr在建立索引时候出现如下错误:
org.apache.solr.common.SolrException: Document [null] missing required field: id
主要是因为Solr 的solrconfig配置文件中定义了<uniqueKey>id</uniqueKey>,默认了ID 是唯一的。
如果你的索引字段不需要ID,就可以把这个改掉.
<uniqueKey>kwid</uniqueKey>
并将id字段里的required="true"属相,
添加到kwid字段。
<field name="pid" type="string" indexed="true" stored="true" required="true"/>
其他细节:
组合域
多域组合查询
明细化控制
命中表示
动态聚类
富文本处理
数据集成
web应用使用solr总体思路: java服务器映射到solr服务(httpSolrServer),solr的web.xml映射到entry solrhome实体数据(实体配置模块),solr实体数据映射数据库。
电商中应用:分页,返回plp对象list,且设置好高亮显示。
参考:
属性定义http://www.cnblogs.com/rainbowzc/p/3695058.html
结合solr服务实现搜索引擎的java代码
http://572327713.iteye.com/blog/2360936
http://www.cnblogs.com/easong/p/6258280.html
http://www.w2bc.com/article/204862
- IKAnalyzer2012FF_u1.jar (398.4 KB)
- 下载次数: 1
相关推荐
在大数据和搜索引擎领域,Elasticsearch (ES) 和 Apache Solr 都是广泛使用的开源技术,它们都基于 Lucene 库,提供高性能、可扩展的全文搜索和分析能力。然而,两者在设计哲学、使用场景、功能特性以及社区支持等...
它提供了分布式、可扩展、高可用性的搜索和分析引擎服务。在搭建Solr环境时,`solr_Tomcat_lib`包扮演了关键角色,因为它是Solr在Tomcat容器中运行所需的库文件集合。 首先,让我们详细了解`lib`目录。这个目录通常...
Solr 是一个开源的全文搜索引擎,它提供了高效且可扩展的搜索和索引能力。在3.5版本中,Solr 已经成为一个成熟的技术,广泛应用于网站的全文检索、商品搜索、文档检索等多个场景。本文将深入探讨 Solr 3.5 的配置...
Solr是一个高性能,采用Java开发,...同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
Solr搜索引擎的使用介绍 Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,基于Java开发,是一款高效、灵活且强大的全文检索服务引擎。它构建在Lucene库之上,提供了更高级别的企业级搜索功能,如...
Solr是Apache Lucene项目的一个子项目,是一个高性能、基于Java的全文检索服务器。它提供了分布式搜索、近实时索引、高可用...通过深入学习和实践,你可以提升对Solr的理解,为你的项目带来更高效的搜索引擎解决方案。
Solr8.4.0 是 Apache Solr 的一个版本,这是一个高度可配置、高性能的全文搜索和分析引擎,广泛用于构建企业级搜索应用。 在 Solr 中,ikanalyzer 是一个重要的组件,它通过自定义Analyzer来实现中文的分词处理。...
SolrCloud是Apache Solr的一种分布式搜索和索引服务模式,它基于ZooKeeper进行集群管理和协调。在本文中,我们将深入探讨如何部署SolrCloud,并...正确部署和配置SolrCloud,对于实现高效、可靠的搜索服务至关重要。
【SolrCloud5.2.1 + Tomcat7 + ...同时,不要忘记对Solr的配置文件(如`solrconfig.xml`和`schema.xml`)进行相应的调整,以满足特定的搜索需求。最后,记得定期备份重要数据,确保系统的稳定性和数据的安全性。
Solr+Paoding中文搜索引擎Demo是一个综合性的项目,旨在展示如何结合Apache Solr与Paoding中文分词器来构建一个高效、精准的中文搜索引擎。Apache Solr是一个流行的开源全文搜索服务器,而Paoding中文分词器是专为...
Solr 5.0 是一个基于Lucene的开源搜索引擎服务器,它提供了全文检索、高亮显示、faceting、拼写检查、实时索引等高级功能。Tomcat 7 是一个流行的Java Servlet容器,用于部署Java web应用程序,包括Solr。IKAnalyzer...
solr_3_2_0-server-8.11.2-1.el7.noarch
solr_3_2_0-doc-8.11.2-1.el7.noarch
Solr搜索引擎是一款强大的开源全文搜索和分析引擎,由Apache软件基金会开发并维护。它主要设计用于处理大量数据的高效检索,支持多种数据源,并提供高度可扩展性和容错性。在深入探讨Solr之前,我们先来理解一下什么...
Solr服务器是Apache Lucene项目的一个子项目,是...总的来说,Solr服务器是企业级搜索引擎的重要选择,适用于电子商务、新闻门户、内部文档检索等多种场景,它的强大功能和灵活性使得它在大数据时代得到了广泛的应用。
Apache Solr 是一个开源的企业级搜索平台,由Apache软件基金会开发。...通过对这些源码的研究,开发者可以了解到Solr是如何处理索引、查询、排序和扩展功能的,进一步提升自己的搜索引擎开发技能。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http G Solr et操作提出查找请求,并得到XML...
《Solr 1.4企业级搜索服务器》一书详细介绍了Apache Solr 1.4版本,这是一个开源的、高性能的、全功能的企业级搜索平台。本书由David Smiley和Eric Pugh共同编写,旨在帮助读者掌握如何利用Solr增强搜索体验,包括...
Apache Solr 是一个基于 Apache Lucene 的开源搜索引擎,为各种应用提供了搜索功能。它具有高效、可靠和强大的特点,广泛应用于企业级搜索、互联网搜索和数据分析。Solr 提供了包括全文搜索、高亮显示、自动拼写更正...
solr配置搜索引擎平台 一、 SOLR搭建企业搜索平台 二.... 三,,,,