Solr Server服务器端安装配置
一、下载SOLR相关
http://mirror.bit.edu.cn/apache/lucene/solr/4.9.1/solr-4.9.1.zip
下载后解压到D:\skg\soft\solr-4.9.1
Solr-4.9.1程序包的目录结构
➔ contrib :存放爱好者贡献的代码。
➔ dist :存放Solr 构建完成的 JAR 文件、WAR 文件和 Solr 依赖的 JAR 文件。
➔ example :是一个安装好的Jetty 中间件,其中包括一些样本数据和 Solr 的配置信息。
➔ example/etc :Jetty 的配置文件。
➔ example/multicore :当安装Slor multicore 时,用来放置多个 Solr 主目录。
➔ example/example-DIH :可以作为solr的主目录,里面包含多个索引库,以及hsqldb的数据,里面有连接数据库的配置示例,以及邮件、rss的配置示例。
➔ example/solr :默认安装时一个Solr 的主目录。
➔ example/webapps :Solr 的 WAR 文件部署在这里。
➔ docs:Solr 的文档。
下载IKAnalyzer
http://download.csdn.net/detail/l444304541/5806281
下载后解压到D:\skg\soft\IKAnalyzer\IKAnalyzer2012FF_u1.jar
二、Tomcat 部署 Solr服务端
1.创建目录D:\skg\skg-solr-server\solr-web
2.解压D:\soft\solr-4.9.1\solr-4.9.1\example\webapps\solr.war 到 D:\skg\skg-solr-server\solr-web
3.复制D:\skg\soft\IKAnalyzer\IKAnalyzer2012FF_u1.jar 到 D:\skg\skg-solr-server\solr-web\WEB-INF\lib
4.创建目录 D:\skg\skg-solr-server\solr-home
5.复制D:\skg\soft\solr-4.9.1\example\solr 到 D:\skg\skg-solr-server\solr-home
6.重命名 D:\skg\skg-solr-server\solr-home\collection1 改为 D:\skg\skg-solr-server\solr-home\product
7.打开文件D:\skg\skg-solr-server\solr-home\product\core.properties
名称:name=collection1
改为:name = product
8.打开D:\skg\skg-solr-server\solr-web\WEB-INF\web.xml文件,修改 env-entry-value 为 solr_home目录路径
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>D:\skg\skg-solr-server\solr-home\</env-entry-value> </env-entry>
9.打开tomcat/conf/server.xml文件,添加下面配置
<Host name="localhost" appBase="webapps" unpackWARs="true"> <Context path="/solr" docBase="D:\skg\skg-solr-server\solr-web" reloadable="false"></Context> </Host>
10.启动tomcat ,浏览器转入 http://localhost/solr/
这看到这个界面表示安装成功,选择左边 core selector可以切换集合(集合类似数据表)。
选择 product下级Query菜单可以在线查询
三、设置solr schema.xml
备份D:\skg\skg-solr-server\solr-home\product\conf\schema.xml,修改 schema.xml如下,红色字是修改内容。
<?xml version="1.0" encoding="UTF-8" ?> <schema name="skg" version="1.5"> <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> </analyzer> </fieldType> <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" /> <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> <!--字段类型 索引:默认分词 查询:最大词长分词--> <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <!--字段类型 索引:默认分词 查询:默认分词--> <fieldType name="text_cn" class="solr.TextField"> <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <!--solr 版本号--> <field name="_version_" type="long" indexed="true" stored="true"/> <!--solr 唯一标识号--> <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <!--字段名称,类型--> <!--产品key:不索引、保存--> <field name="key" type="string" indexed="false" stored="true" /> <!--产品标题: ik分词、索引、保存--> <field name="title" type="text_ik" indexed="true" stored="true" /> <!--产品子标题: ik分词、索引、保存--> <field name="sub_title" type="text_ik" indexed="true" stored="true" /> <!--产品分类ID: ik分词、索引、保存--> <field name="cid" type="string" indexed="true" stored="true" /> <!--产品图片: 不索引、保存--> <field name="img" type="string" indexed="false" stored="true" /> <!--产品价格: 索引、保存--> <field name="price" type="double" indexed="true" stored="true" /> <!--产品属性: 索引、保存--> <field name="props" type="text_cn" indexed="true" stored="true" /> <!--产品描述: 索引、保存--> <field name="text" type="text_cn" indexed="true" stored="true" /> <!--产品所属地区: 索引、保存--> <field name="area" type="double" indexed="true" stored="true" /> <!--产品组合件数: 不索引、保存--> <field name="num" type="int" indexed="false" stored="true" /> <!--产品最后更新时间: 索引、保存--> <field name="time" type="long" indexed="true" stored="true" /> <!--产品状态: 不索引、保存--> <field name="status" type="string" indexed="false" stored="true" /> <!--产品所在地区: 索引、保存--> <field name="area_id" type="string" indexed="true" stored="true" /> <!--产品所在地城市: 索引、保存--> <field name="city_id" type="string" indexed="true" stored="true" /> <!--产品样式: 索引、保存--> <field name="style_id" type="string" indexed="true" stored="true" /> <!--字段名称,类型--> <!--唯一ID字段名称--> <uniqueKey>id</uniqueKey> <!--默认查询字段--> <defaultSearchField>title</defaultSearchField> <!--默认查询条件--> <solrQueryParser defaultOperator="OR"/> <fieldType name="string" class="solr.StrField" sortMissingLast="true" /> <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/> <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/> <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/> <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/> <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/> <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/> <fieldtype name="binary" class="solr.BinaryField"/> <fieldType name="random" class="solr.RandomSortField" indexed="true" /> <fieldType name="managed_en" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.ManagedStopFilterFactory" managed="english" /> <filter class="solr.ManagedSynonymFilterFactory" managed="english" /> </analyzer> </fieldType> <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EnglishPossessiveFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.EnglishPossessiveFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> </analyzer> </fieldType> <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.PorterStemFilterFactory"/> </analyzer> </fieldType> <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter class="solr.EnglishMinimalStemFilterFactory"/> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> </analyzer> </fieldType> <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true"> <analyzer> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.TrimFilterFactory" /> <filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replacement="" replace="all" /> </analyzer> </fieldType> <fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" > <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/> </analyzer> </fieldtype> <fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" > <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/> </analyzer> </fieldtype> <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory" /> </analyzer> </fieldType> <fieldType name="descendent_path" class="solr.TextField"> <analyzer type="index"> <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" /> </analyzer> <analyzer type="query"> <tokenizer class="solr.KeywordTokenizerFactory" /> </analyzer> </fieldType> <fieldType name="ancestor_path" class="solr.TextField"> <analyzer type="index"> <tokenizer class="solr.KeywordTokenizerFactory" /> </analyzer> <analyzer type="query"> <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" /> </analyzer> </fieldType> <fieldtype name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" /> <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/> <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType" geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" /> <fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD" currencyConfig="currency.xml" /> <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt" /> <filter class="solr.ArabicNormalizationFilterFactory"/> <filter class="solr.ArabicStemFilterFactory"/> </analyzer> </fieldType> </schema>
到这里 solr服务器端已安装配置完成。