solr的原理不和大家一一讲述,主要讲solr在使用过程中的注意事项
一.solr建立服务
首先是安装solr,安装步骤省略。。。。(不要说我懒,安装步骤导出都是。。。)
成功之后 需要在solr里面建立一个针对你的业务的服务,我想建立一个叫做discuz的服务
./bin/solr create -c discuz
然后你在你的solr目录 :solr-5.5.3/server/solr/ 下看见了discuz ,这是你刚刚创建的,针对某一业务的整个搜索配置都是在这个目录下配置的。
discuz目录解析:
1.conf :配置文件(索引、分词库、停词库等等配置)
2.core.properties
3.data
二.建立索引
建立索引就是数据库和solr建立一个关系,可以满足数据库数据定时导入solr里面,方面solr实现搜索。那么怎么建立索引呢?
在solr-5.5.3/server/solr/discuz/conf/data-config.xml 里面
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://11.11.11.11:800/database" user="root" password="123456"/> <document> <entity name="database" query="SELECT * FROM table; " deltaQuery="SELECT id FROM table where `create` > unix_timestamp('${dataimporter.last_index_time}' ; " deltaImportQuery="SELECT * FROM table where id =${dataimporter.delta.tid}" pk='tid'> <field column="id" name="id" /> <field column="subject" name="subject" /> <field column="views" name="views" /> <field column="vip" name="vip" /> <field column="message" name="message" /> <field column="create" name="create" /> </entity> </document> </dataConfig>
dataConfig 里面是对数据库导入的一个配置
dataSource:数据库连接配置
document:数据库索引配置
entity:name= 数据库名字
query=全量导入数据的sql
deltaQuery:增量导入的id
deltaImportQuery:增量导入的sql
解释一下全量和增量:正常数据库导入solr第一次是全部导入,但是随着时间的变化数据库和solr数据不一致,这时候需要再次导入,按时间技术,半小时或者更合适的时间,只需要增量导入即可,更合适的时间再次全量导入即可
field 这些是返回字段的定义
==到现在数据库和solr的关系完事了,下面是solr自身对这些字段的处理
三.solr 对展示字段以及搜索的配置
在solr-5.5.3/server/solr/discuz/conf/solrconfig.xml
1.添加一下代码
<schemaFactory class="ManagedIndexSchemaFactory"> <bool name="mutable">true</bool> <str name="managedSchemaResourceName">managed-schema</str> </schemaFactory>
在conf下面的 managed-schema 文件里对索引配置
1.配置中文分词mmseg4j
<!-- mmseg4j--> <fieldType name="text_mmseg4j_complex" class="solr.TextField" positionIncrementGap="100" > <analyzer type="index"> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="solr-5.5.3/server/solr/discuz/conf/dic"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> </analyzer> <analyzer type="query"> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="solr-5.5.3/server/solr/discuz/conf/dic"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> </analyzer> </fieldType> <fieldType name="text_mmseg4j_maxword" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="solr-5.5.3/server/solr/discuz/conf/dic"/> </analyzer> </fieldType> <fieldType name="text_mmseg4j_simple" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="solr-5.5.3/server/solr/discuz/conf/dic"/> </analyzer> </fieldType> <!-- mmseg4j-->
solr-5.5.3/server/solr/discuz/conf/dic:中文分词的分词库目录,在改目录下放word.dic分词文件
stopwords.txt:停词文件
synonyms.txt:近义词文件
analyzer type="index":索引检查分词、停词、近义词
analyzer type="query":查找检查分词、停词、近义词
2.配置索引字段、字段类型、查询字段的中文分词类型
<field name="submes" type="text_mmseg4j_complex" indexed="true" stored="true" required="true" multiValued="true" />
<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="vip" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="views" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="create" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="subject" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="message" type="text_general" indexed="true" stored="true" required="true" multiValued="false" />
<copyField source="subject" dest="submes" />
<copyField source="vip" dest="submes" />
<copyField source="views" dest="submes" />
<copyField source="create" dest="submes" />
field 字段定义了solr展示的类型
name:字段名字
type:字段类型(如果是要进行查询的字段,类型为中文分词类型如:text_mmseg4j_complex)
indexed:true
stored:true
required:true
multiValued:查询字段设置为true ,其他为false
copyField : 拷贝需要索引的字段到整合字段中 submes是本列子中的整合字段 solr查询也是查询这个字段
这个字段可以根据多个字段进行权重设置,并且打分,排序
四.重启solr
discuz配置都已经更改完,现在需要重启生效:
./bin/solr restart
对于一些大的网站而言,重启整个solr回导致其他业务无法搜索,所以可以搞一个zookeep 来一个分布式 管理就可以了
五.使用
1.增量导入,在你的solr使用界面上左边下拉框找到discuz
下面出现的
Dataimport: 是执行增量全量导入的
query:搜索
analysis:分词
无法加载图片,根据很难形容,但是打开这个界面就知道了
2.搜索打分:有的时候我们除了想根据匹配度排序外,还想根据浏览量、创建时间、是否是vip等综合因素排序,
在curl请求时 请求参数要加上下面的值:
$params['defType'] = 'edismax' ;
$params['bf'] = "sum(linear(vip,1000,0),linear(sqrt(log(linear(views,1,2))),100,0),sqrt(log(create)))";
bf里面的参数是solr支持的打分标准的函数,具体使用参考http://mxsfengg.iteye.com/blog/352191 详解 很不完善,后续还会完善,如有问题随时提问
相关推荐
3. **加载中文分词jar包**:将中文分词器的jar包添加到Solr的lib目录下,以供Solr使用。 #### 六、监控Solr 监控Solr集群的状态对于及时发现和解决问题至关重要。 - **使用Cloudera Manager**:Cloudera Manager...
Solr 使用指南 Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的 Java 来实现。服务器通信使用标准的 HTTP 和 XML,因此如果使用 Solr,了解 Java 技术会有用却不是必须的要求。Solr 的核心技术是使用...
solr使用和原理 简单明了的介绍了solr的使用和原理,及其部署方式,适合初学者第一次部署
【Solr 使用教程结合 TaoTao 项目 Search 模块1】 在本文中,我们将深入探讨如何使用 Apache Solr,一个基于 Lucene 的全文搜索引擎,以及如何将其集成到 TaoTao 电商项目的 Search 模块中。Solr 提供了高效、可...
### Solr使用指南 #### 一、Solr简介与安装 **Apache Solr** 是一个高性能、基于 Lucene 的全文搜索引擎。它支持高度可扩展且可靠的数据搜索功能,并且易于部署和管理。Solr 能够处理大量的数据,并提供丰富的查询...
### Solr 3.* 使用手册知识点总结 #### 一、Solr简介与核心概念 - **Solr**:Apache Solr 是一个高性能、基于 Lucene 的全功能搜索引擎平台。它支持分布式搜索,并提供了丰富的功能集来满足企业级搜索需求。 - **...
### Solr的安装使用步骤详解 #### Solr概述与特性 **Solr** 是 Apache 下的一个顶级开源项目,它基于 **Lucene** 进行构建,提供了强大的全文搜索能力。相较于 Lucene,Solr 提供了更为丰富的查询语言支持,并且...
通过阅读“Solr使用详解.pdf”,你可以深入了解Solr的使用方法,掌握从安装配置到实际操作的全过程,从而更好地利用Solr解决实际的搜索和分析问题。同时,solrJ和IK分词器的使用将进一步提升你在Java环境中操作Solr...
- **请求处理**:当请求到达时,Solr使用RequestHandler来解析和处理这些请求,返回结果。 - **配置**:Solr的配置文件在`conf`目录下,包括schema.xml(定义字段和字段类型)、solrconfig.xml(配置索引和查询...
《easynet.solr开发与使用》 在现代信息技术领域,搜索引擎已经成为不可或缺的一部分,而Apache Solr作为一款强大的开源搜索引擎,被广泛应用于各种数据检索场景。为了方便开发者更高效地集成和操作Solr,Easynet...
Solr使用倒排索引技术,将文档中的每个词映射到包含该词的文档列表,大大提高了搜索速度。 2. **Core**:在Solr中,Core是一个独立的搜索实例,可以理解为数据库的概念。每个Core有自己的配置、索引和数据。你可以...
Solr使用DataImportHandler(DIH)来从关系型数据库、XML文件或其他数据源导入数据。DIH提供了一个全面的数据加载框架,支持全量导入和增量导入。 1. **全量导入**:全量导入是将所有数据从源数据库或文件一次性...
4. **Schema设计**:Solr使用Schema.xml文件来定义索引字段,包括字段类型、分词器、过滤器等,这对于优化搜索性能至关重要。 5. **RESTful API**:Solr 8.8.2支持JSON、XML等多种格式的HTTP接口,便于通过编程方式...
标签“php与solr”、“solr”、“solr使用”进一步明确了这个扩展库的核心功能和应用场景,它主要用于PHP开发者在处理Solr相关的任务时,提供便利的接口和工具。 压缩包子文件的文件名称“SolrPhpClient”很可能是...
1.2.1 Solr使用Lucene并且进行了扩展 Solr基于Apache Lucene,它提供了更高级的功能,如集群、分布式搜索、复制和负载均衡,使得Solr更适合大规模、高并发的搜索应用。 1.2.2 Schema(模式) Schema是Solr的核心...
9. **日志和监控**:Solr使用Log4j进行日志记录,`log4j.jar`包含相关功能。同时,`solr-logging.jar`支持监控Solr服务器的状态和性能。 总之,这个压缩包提供了Solr运行所需的全套库,无论是开发、部署还是维护...
文档的【描述】部分反复强调“solr 使用官方指南”,这意味着文档是权威的、官方认可的学习材料,包含了使用 Solr 进行搜索引擎搭建、部署、管理等操作的官方指导和最佳实践。 【标签】为 "solr",直接反映了文档...
配置文件(如`schema.xml`或`solrconfig.xml`)需要更新以指示Solr使用IKAnalyzer进行分词。JAR库文件(如`ik-analyzer.jar`)则需要添加到Solr的类路径中,以便在运行时能够加载和使用分词器。字典文件通常包含预定...