Solr 版本是 4.9.0 最新版,因为每个版本都有不同程度差异,所以教程种类繁多,大都是
1.X 的教程,其他这里推荐 http://wiki.apache.org/solr/ 资料齐全,不过是英文,但很值得
一看,可根据不同版本做相应的配置调整。
Tomcat 的架设网上太多教程,这里就不多说了,传送门
Tomcat7.X
http://www.cnblogs.com/Johness/archive/2012/07/20/2600937.html
安装
Solr4.X 安装教程(和之前的版本有些区别),附带传送门
http://blog.csdn.net/rzhzhz/article/details/11966763
这里说下 4.X 的安装过程
首先将安装包解压,目录为@solrUnZip
复制 @solrUnZip/dist/solr-4.X.X.war 文件至%CATALINA_HOME%/webapps/并重命名为
solr.war.
Ok ,启动 tomcat(cmd ->startup.bat 前提是配置好 tomcat 环境变量),
如果报错,请先解决其他错误,可能是环境变量配置有误,
启动之后,tomcat 自动解压 war 文件,在%CATALINA_HOME%/webapps/文件夹下生成
solr 文件夹,打开%CATALINA_HOME%/webapps/solr/WEB-INF/web.xml
找到节点,配置 solr/home 变量,去掉注释,
solr/home
@solrhome
java.lang.String
新建文件 %CATALINA_HOME%/conf/Catalina/localhost/solr.xml
内容如下:
%CATALINA_HOME%是环境变量 CATALINA_HOME 相应的路径
%JAVA_HOME%是 jdk 环境变量
@solrUpZip 是安装包解压路径
@solrhome 是自定义的 solr 主目录
接下来很重要!
复制@solrUnZip/example/dist/*.jar 至%CATALINA_HOME%/webapps/solr/WEB-INF/lib
中
复制@solrUnZip/example/lib(/lib/ext)下的.jar 文件至%CATALINA_HOME%/lib
复制@solrUnZIp/example/start.jar 至@solrhome(可选),便于后面 xml 文件提交/更
新索引数据
复制@solrUzZip/example/exampledocs/post.jar 至%JAVA_HOME%
重启 tomcat
OK! 打开浏览器 http://127.0.0.1:8080/solr/
如果看到这个界面,则说明配置成功了。
日志:
因为后面需要加载插件,服务器的日志记录在 admin 面板中的 Loging 中,如图
如果有其他错误,请按照错误提示信息,修改配置
添加 core
Solr 可以添加多个 core,相当于一个数据中可以有多张表,
可以通过在%solr_home%\solr.xml 文件中加入索引库(core)信息
首先在在 solr>cores>中加入 core 节点,如下
其中@coreDir 可以自己指定,
可以手动建立@coreDir 文件夹,也可以启动你的 solr,solr 会在它在第一次加载 core
的时候默认生成相应文件夹和文件。
也可以参照 solr 安装文件解压文件夹下\example\multicore\solr.xml.
配置字段
为你的索引表添加字段
在@core\conf\schema.xml 中添加配置
首先在中加入上下文数据类型
@filedtype 为数据类型名称,可以自定义例如:
name="string" ,name="bool",name="MyDataType".
class 对应 solr 内置的字段类型,命名格式为 solr.XXXFiled,下面的表格中是常用的字段
(除过 solr.CurrencyFiled 单独介绍外)
Solr 内置数据类型:
BCDIntField
二进制整形字段
BCDLongField
二进制长整形字段
BCDStrField
二进制字符型字段
BinaryField
二进制数据
BoolField
ByteField
DateField
DoubleField
包含 true 或者 false,值的第一个字符如果是 1、t、T 均表示
true,其他为 false
一个字节数据
一个精确到毫秒的时间值
ExternalFileField 从硬盘读取文件作为该字段的值
FloatField
IntField
Location
LongField
Point
方位搜索用到,存经纬度值
N 维点搜索,在蓝图或者 CAD 图中使用
RandomSortField 不包含值,当查询时按这种类型的字段排序时会产生随机排序。使
用该特性时需要是一个动态字段
ShortField
StrField
TextField
UUIDField
UTF-8 编码的字符串或 Unicode
文本类型,一般包含多个单词或汉字
唯一识别码,单传入的值是“NEW”时,Solr 将为其创建 1 个 UUID
值
下面的配置为简单样例:
type="string"
indexed="true"
type="string"
indexed="true"
type="long"
indexed="true"
ClassifyId
ClassifyName
注意:每个 core 必须有一个“_version”字段且为索引
Filed 字段类似于表结构中的字段,uniqueKey 是主键, defaultSearchField 是默认搜索字段
name 是字段名称,indexed 是否为该字段添加索引,stored,是否存储,其中的 type 可以是自
己定义的数据类型,也可以是 solr 内置的数据类型,但前提是必须在 filedtype 节点中定义。
定义如下:
class="solr.TrieLongField"
class="solr.TrieDateField"
/>
/>
class="solr.BoolField">
其中 solr.CurrencyField 对应自定义的 decimal 数据类型,要使用该字段必须在
@core/conf 下添加 currency.xml 文件,文件格式可以参照,solr 安装包解压路径下的
@solr_Setup/example/example-schemaless/solr/collection1/conf/currency.xml
注意:该数据格式在序列化成 JAVA 或 C# decimal 时会报错,解决方案:替换掉货币单
位后缀(例如.USD)即可,
1
定义完之后,打开打开浏览器。地址:http://127.0.0.1:8080/solr/
在 admin 面板中选择已经配置好字段的@core,选择 schama Browser 检查配置正确性。
数据导入
数据导入可以有多种方式,json 文件导入,xml 文件导入,数据库导入,
文件导入方式简单,使用 post.jar(前文已经说明,已经拷贝至%Path%中)
Json 文件这里略过不说,只说后两种方式。
Xml 文件格式:
1
0
1
0001
385
Abrasives
2
1
2
0002
485
Assives
导入方式:
Cmd>
java -Durl=http://@solrServerAddr/solr/@core/update -jar post.jar
@filePath\XXX.xml
数据库导入方式:
根据不同的数据库,请下载相对应的 jdbc 驱动,以 MSSQL SERVER 为例首先在 microsoft 官
网下载 microsoft JDBC Driver X.X for SQL Server
然后将 sqljdbc.jar 拷贝至%CATALINA_HOME%\lib 中
如果是 64 位 tomcat,请拷贝 sqljdbc(版本号).jar,例如 sqljdbc4.jar
至%CATALINA_HOME%\lib 中
重启 tomcat
打开@core\conf\solrconfig.xml
在 config 节点中添加
@core\conf\data-config.xml
除此之外,还必须连同一起添加@core\conf\data-config.xml 文件
可以参考@solrUpZip\example\example-DIH\solr\db\conf\db-data-config.xml 文件
Document 是定义实体,可以定义多个实体, dataSource 是定义数据源的
name="ClassifyId"
name="ClassifyName"
>
name="ClassifyLeval"
>
为了避免查询的时候表字段外泄,可以修改 name 的值,但是必须和 schema.xml 文件中的字段名相一致
配置好了之后,重启 tomcat
选择 core 之后,打开 dataimport 插件,如图是完全倒入,先清理掉原数据后重现建立索引,
如此比较耗时,在 solr4.x 后出现了局部索引更新功能,这里还是用通用的方式。简单不易出
问题。
导入完之后,会有提示,并且会有部分有用信息,如图