环境
solr的文件可以在http://archive.apache.org/dist/lucene/solr/下载,我选择的是5.5.2,后面的版本ik分词器不支持了,ik分词器可以在https://github.com/EugenePig/ik-analyzer-solr5下载
配置
- 下载完成后解压压缩包,将目录下的server\solr-webapp文件夹下的webapp文件夹复制到tomcat的webapps目录下,为了方便访问把solr的那个webapp目录换成solr
- 然后在tomcat/webapps/solr/WEB-INF目录下创建classes目录,将solr主目录下的server\resources里面的log4j的配置文件复制进去。再将solr主目录下\server\lib\ext中的全部jar导入到tomcat/webapps/WEB-INF/lib中。
- 接下来是创建solrhome和solrcore,solrhome是存放solrcore的目录,在一个地方创建一个文件夹作为solrhome,在tomcat/webapps/solr/WEB-INF的web.xml文件中添加以下配置
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:\solr\solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
- 在solrhome目录下创建solrcore目录,将solr主目录下的server\solr\configsets\sample_techproducts_configs文件夹下的conf文件夹全部复制到创建的solrcore中,再将solr主目录下server\solr\中的solr.xml复制到solrhome目录下。
- 此时启动tomcat,在浏览器输入http://localhost:8080/solr/admin.html就会进入管理界面,点击core selector就可以看见你配置的solrcore了,名字就是你文件夹的名字,点进去后可以看见相应操作。
- overview可以看见此core的相关信息
- analysis可以测试索引分析器和搜索分析器的执行情况
- dataimport可以定义数据导入处理器,从关系数据库将数据导入Solr索引库中。默认没有配置,需要手工配置
- document通过/update表示更新索引,solr默认根据id(唯一约束)域来更新Document的内容,如果根据id值搜索不到id域则会执行添加操作,如果找到则更新。
- query是搜索的界面
5.1. q - 查询关键字,必须的,如果查询所有使用:
5.2. fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的
5.3. sort - 排序,格式:sort=名字+desc|asc,名字2+desc|asc…..
5.4. start - 分页显示使用,开始记录下标,从0开始
5.5. rows - 指定返回结果最多有多少条记录,配合start来实现分页。实际开发时,知道当前页码和每页显示的个数最后求出开始下标。
5.6. fl - 指定返回那些字段内容,用逗号或空格分隔多个
5.7. df-指定一个搜索Field,也可以在SolrCore目录 中conf/solrconfig.xml文件中指定默认搜索Field,指定后就可以直接在“q”查询条件中输入关键字。
5.8. wt - (writer type)指定输出格式,可以有 xml, json, php, phps,。
5.9. 是否高亮 ,设置高亮Field,设置格式前缀和后缀。
- solr默认是没有中文分词器的,需要手动导入ik分词器的jar和在配置文件中修改,将ik的jar复制到tomcat/webapps/solr/WEB-INF/lib中。将ik分词的扩展配置加到tomcat/webapps/solr/WEB-INF/classes中,然后在打开solrcore的conf文件夹下的managed-schema文件,添加如下配置
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer" />
<analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType>
- 接下来是配置dataimport,将solr的主目录下/dist/solr-dataimporthandler-5.5.2.jar复制到tomcat/webapps/solr/WEB-INF/lib中,同时导入数据库驱动。在solrcore目录下的conf中创建data-config.xml。配置书库库信息
<dataConfig>
<!-- 这是mysql的配置 -->
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/solr?useUnicode=true&characterEncoding=UTF-8"
user="root"
password="root"/>
<document>
<!-- name属性,就代表着一个文档,可以随便命名 -->
<!-- query是一条sql,代表在数据库查找出来的数据 -->
<entity name="test" query="select * from products">
<!-- 每一个field映射着数据库中列与文档中的域,column是数据库列,name是solr的域(必须是在managed-schema文件中配置过的域才行) -->
<field column="id" name="id"/>
<field column="name" name="name"/>
</entity>
</document>
</dataConfig>
然后修改solrcore目录下conf中的solrconfig.xml,添加以下字段
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
重启tomcat后进入管理界面点击dataimport已经可以进去那个界面了,但是我点击execute会报错,cannot read property length of null不知道为什么。