一、solr搭建:
1.拷贝目录“apache-solr-4.0\dist”下的war包到tomcat下 wepapp目录中。
2.拷贝目录“apache-solr-4.0\example”下的solor文件夹到自定义目录(一般默认放在tomcat的根目录,主要是solor的一些配置文件和倒排索引文件),此文件夹中已经拷入了solr的jar包
3. 运行tomcat后,修改webapps\solr\WEB-INF下的web.xml中“solr/home”的值,即为下面表格中的红色部分为第二步的目录:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>E:/CC_Server/Tomcat/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>测试下部署是否成功:
在IE中打开链接http://localhost:8080/solr,如果可以进入solor后台,则说明配置成功。这样就可以在其它地方调用solr服务了。
二、schema.xml解析
<?xml version="1.0" ?>
<schema name="example core zero" version="1.1">
<types>
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
</types>
<fields>
<!-- general -->
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="type" type="string" indexed="true" stored="true" multiValued="true" />
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="name" type="string" indexed="true" stored="true" multiValued="false" />
<field name="parentTermLabel" type="string" indexed="true" stored="true" multiValued="true" />
<field name="parentTcid" type="string" indexed="true" stored="true" multiValued="true" />
<field name="parentTaid" type="string" indexed="true" stored="true" multiValued="true" />
<field name="parentAid" type="string" indexed="true" stored="true" multiValued="true" />
<field name="parentImported" type="string" indexed="true" stored="true" multiValued="true" />
<field name="parentTcidString" type="string" indexed="true" stored="true" multiValued="true" />
<field name="childTermLabel" type="string" indexed="true" stored="true" multiValued="true" />
<field name="childTcid" type="string" indexed="true" stored="true" multiValued="true" />
<field name="childTaid" type="string" indexed="true" stored="true" multiValued="true" />
<field name="childAid" type="string" indexed="true" stored="true" multiValued="true" />
<field name="childImported" type="string" indexed="true" stored="true" multiValued="true" />
<field name="sourceThesaurus" type="string" indexed="true" stored="true" multiValued="true" />
<field name="thesaurusId" type="string" indexed="true" stored="true" multiValued="true" />
<field name="copy" type="string" indexed="true" stored="true" multiValued="true" />
<dynamicField name="*" type="string" indexed="true" stored="true" multiValued="true"/>
<dynamicField name="*s" type="string" indexed="true" stored="true" multiValued="true"/>
</fields>
<!-- field to use to determine and enforce document uniqueness. -->
<uniqueKey>id</uniqueKey>
<!-- field for the QueryParser to use when an explicit fieldname is absent -->
<defaultSearchField>name</defaultSearchField>
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="OR"/>
</schema>
注意:
1、<fields>...</fields>中的id,type,_version_是保留字段必须存在。否则在检索时就会报错,无法检索。
2、<fields>...</fields>中的name字段不是保留字段,但是在下面配置了
<defaultSearchField>name</defaultSearchField>默认检索字段
是这个字段也变成了必须存在的字段
3、<fields>...</fields>中的dynamicField字段是动态字段,可以动态匹配 “*+非*” 所组成的字段名如:"*s"就可以匹配所有以*结尾的字段。