首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

solr运作步骤

2012-08-30 
solr运行步骤一,安装?1,下载solr 3.3.0,解压缩2,将\apache-solr-3.3.0\example\webapps\solr.war放到\tomc

solr运行步骤

一,安装

?

1,下载solr 3.3.0,解压缩

2,将\apache-solr-3.3.0\example\webapps\solr.war放到\tomcat\Tomcat6-2\webapps下解包.生成名字为solr的工程.

?

3,在\tomcat\conf\Catalina\localhost文件夹下,创建solr.xml(对应webapps下的solr工程),xml文件内容为

<Context  debug="0" crossContext="true" >    
  <Environment name="solr/home" type="java.lang.String" value="C:/web/solr" override="true" />  </Context>  
?

指定了solr.home为C:/web/solr...tomcat启动后会在这个路径solr.home/conf下加载相关配置文件

?

4,\apache-solr-3.3.0\example\solr下的文件复制到solr.home中(即C:/web/sol下)

?

5,访问http://localhost:8080/solr/admin/如果出现页面,表明部署成功.点击search按钮可以看到服务器的回应


<?xml version="1.0" encoding="UTF-8"?><response><lst name="responseHeader">  <int name="status">0</int>  <int name="QTime">0</int>  <lst name="params">    <str name="indent">on</str>    <str name="start">0</str>    <str name="q">*:*</str>    <str name="rows">10</str>    <str name="version">2.2</str>  </lst></lst><result name="response" numFound="0" start="0"/></response>
?

?

由于没有建索引,而且页面不支持中文参数,所以暂时无法进行有意义的测试

?

?

二,中文分词

?

lucene在升级到3.0之后改变了api,而目前流行的中文分词器中,有些并没有同步更新,于是选择了IKAnalyzer3.2.5.安装步骤:

?

1,下载IKAnalyzer3.2.5Stable_bin.zip,解压缩.将IKAnalyzer3.2.5Stable.jar导入工程.然后在solr.home/conf(即C:/web/solr/conf)下找到schema.xml,加入如下代码----这段代码定义了text类型,以及处理方式,这个类型会在--第三部分,建立索引--中用到

?

 <fieldType name="text" positionIncrementGap="100">              <analyzer type="index">                  <tokenizer />                 <filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />                  <filter generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />                  <filter />                  <filter protected="protwords.txt" />                  <filter />              </analyzer>              <analyzer type="query">                              <tokenizer />                                 <filter synonyms="synonyms.txt" ignoreCase="true" expand="true" />                  <filter ignoreCase="true" words="stopwords.txt" />                  <filter generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />                  <filter />                  <filter protected="protwords.txt" />                  <filter />              </analyzer>      </fieldType> 

?

2,访问http://localhost:8080/solr/admin/analysis.jsp,测试分词效果

solr运作步骤

?

?

三,建立索引

?

1,打开solr.home/conf/solrconfig.xml,加入如下代码----如果uri包含/dataimport,则用DataImportHandler处理

?

<requestHandler name="/dataimport" name="code"><?xml version="1.0" encoding="UTF-8" ?><dataConfig>          <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.110.112:3396/laws_and_regulations" user="root" password="123456"/>      <document name="documents">              <entity name="documents" pk="id" query="select id,title,content,publishtime,validtime,category1,category2,invalidtime,publishorg from laws_and_regulations WHERE '${dataimporter.request.command}' != 'delta-import' OR last_modified > '${dataimporter.last_index_time}' limit ${dataimporter.request.offset},${dataimporter.request.length}">           <!--   <field column="id" name="id" />             <field column="title" name="title" />              <field column="content" name="content" />                       <field column="publishtime" name="publishtime" />             <field column="validtime" name="validtime" />             <field column="category1" name="categor1" />             <field column="category_2" name="categor2" />             <field column="invalidtime" name="invalidtime" />             <field column="publishorg" name="publishorg" />       -->        </entity>      </document>  </dataConfig> 

?1)dataSource指定数据源

?2)document name作用不明

?3)查询语句中where后面的语句用于判断是否进行增量索引(待续),limit限制索引条目数,防止outofmemory错误.

?4)注释掉的部分,column属性匹配数据库字段名称,name属性在schema中定义(见第三步),如果column和name相同,可以省略这个配置

?

3,打开solr.home/conf/schema.xml,把如下代码添加到<fields>标签内

?

 <field name="title" type="text" indexed="true" stored="true" multiValued="true"/>   <field name="category1" type="text" indexed="true" stored="true"/>   <field name="category2" type="text" indexed="true" stored="true"/>   <field name="content" type="text" indexed="true" stored="true" multiValued="true"/>   <field name="publishtime" type="long" indexed="true" stored="true"/>   <field name="validtime" type="long" indexed="true" stored="true"/>   <field name="invalidtime" type="long" indexed="true" stored="true"/>   <field name="publishorg" type="text" indexed="true" stored="true"/>

?name匹配步骤2中的name,type在schema.xml文件靠前的位置定义.由于我们在第二部分:中文分词中已经定义了text,并加入了中文分词器,所以将title,content这种需要中文检索的字段的type指定为text

?

?

4,访问http://localhost:8080/solr/dataimport?command=full-import&clean=true&offset=0&length=10000&indent=on

?? 1)dataimport触发DataImportHandler

2)command=full-import表示全部索引

?? 3)clean=true删除原来的所以,默认为true

?? 4)offset和length对应db-data-config.xml中的查询语句,默认JVM设置下length=20000就会导致outofmemory

?? 如果出现回应

?

<?xml version="1.0" encoding="UTF-8"?><response><lst name="responseHeader">  <int name="status">0</int>  <int name="QTime">0</int></lst><lst name="initArgs">  <lst name="defaults">    <str name="config">../db/conf/db-data-config.xml</str>  </lst></lst><str name="command">full-import</str><str name="status">busy</str><str name="importResponse">A command is still running...</str><lst name="statusMessages"/><str name="WARNING">This response format is experimental.  It is likely to change in the future.</str></response>

?

?? 表示执行成功,线程正在建立索引,status为busy.,此时再次刷新页面可以看到当前消耗的时间,处理的文档数等

?

?? 同时后台输出日志

?

solr运作步骤

?

?? 出现time taken = xx:xx:xx ?意味着索引结束

?

?? 刷新页面后可以看到status变成了idle.

?

?? 在常见索引的过程中solr.home下会出现一个data文件夹,来存储索引.索引格式可参考http://forfuture1978.iteye.com/blog/546824

?

?

5,访问http://localhost:8080/solr/admin/输入查询语句,例如title:2007(表示在title字段中匹配含有2007的条目),点击search后可以看到返回结果,测试中部分结果如下

<?xml version="1.0" encoding="UTF-8"?><response><lst name="responseHeader">  <int name="status">0</int>  <int name="QTime">0</int>  <lst name="params">    <str name="indent">on</str>    <str name="start">0</str>    <str name="q">title:2007</str>    <str name="rows">10</str>    <str name="version">2.2</str>  </lst></lst><result name="response" numFound="27" start="0">  <doc>    <str name="category1">中国法规规章库</str>    <str name="category2">医药卫生</str>    <arr name="content"><str>药品注册管理办法(2007年)(国家食品药品监督管理局令第28号)  《药品注册管理办法》于2007年6月18日经国家食品药品监督管理局局务会审议通过,现予公布,自2007年10月1日起施行。                                                局长:邵明立                                             二○○七年七月十日
?

---------------------未完待续---------------------------

热点排行