solr常用命令:
-
solr start 启动solr单机版
-
solr start -p 8984 指定端口启动
-
solr restart 重启
-
solr create/create_collection -c coreName 创建新core
-
solr delete -c coreName 删除core
-
solr stop -all 停止solr
-
solr status 查看solr状态
-
java -Dauto -Dc=gettingstarted -Drecursive=yes -jar example\exampledocs\post.jar docs/ 导入数据
使用:
-
进入solr的bin目录,solr start即可启动,默认使用8983端口。
-
使用solr create_collection -c coreName 创建一个core。
-
修改/server/solr/coreName/conf 内的managed-schema和solrconfig.xml文件,添加如下代码
managed-schema:配置中文分词
<field name="question_title" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<field name="question_content" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<fieldType name="text_ik" class="solr.TextField">
<!--索引时候的分词器-->
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.util.IKTokenizerFactory" useSmart=“false"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<!--查询时候的分词器-->
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.util.IKTokenizerFactory" useSmart=“true"/>
</analyzer>
</fieldType>
solrconfig.xml:数据库导入数据的时候使用
<lib dir="${solr.install.dir:../../../..}/ext/ikanalyzer" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/ext/mysql" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-\d.*\.jar" />
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">solr-data-config.xml</str>
</lst>
</requestHandler>
再新建一个solr-data-config.xml文件,连接数据库使用
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/wenda?serverTimezone=UTC"
user="root"
password="w123456"/>
<document>
<entity name="question" query="select id,title,content from question">
<field column="content" name="question_content"/>
<field column="title" name="question_title"/>
</entity>
</document>
</dataConfig>
-
在solr根目录创建ext文件夹(自定义),然后在文件内放入ik_analyzer(自己编译的)和mysql-connector的jar包。
-
重启solr :solr restart -p 8983
-
-
使用Dataimport导入数据库数据
-
使用Query可以测试查询数据。
-
在Java中使用solr-solrj包来操作solr
solr原理:
-
先全文检索然后创建反向索引
-
全文检索:对文档内容进行分词,对分词后的结果创建索引,然后通过对索引进行搜索的方式叫做全文检索。
-
Solr/Lucene采用的是一种反向索引,所谓反向索引:就是从关键字到文档的映射过程,保存这种映射这种信息的索引称为反向索引
-
全文检索过程:
-
去除停词和标点符号,例如英文的this,that等, 中文的”的”,”一”等没有特殊含义的词
-
会将所有的大写英文字母转换成小写,方便统一创建索引和搜索索引
-
将复数形式转为单数形式,比如students转为student,也是方便统一创建索引和搜索索引
-
-
搜索过程:
-
1.用户输入搜索条件
-
2.对搜索条件进行分词处理
-
3.根据分词的结果查找索引
-
4.根据索引找到文档ID列表
-
5.根据文档ID列表找到具体的文档,根据出现的频次等计算权重,最后将文档列表按照权重排序返回
-