当前位置: 代码迷 >> Web前端 >> SOLR的学习拾掇
  详细解决方案

SOLR的学习拾掇

热度:566   发布时间:2012-07-15 20:20:06.0
SOLR的学习整理

???

Apache Solr

??? 项目地址?? http://lucene.apache.org/solr/,一个基于lucene的开源搜索项目,可以基于文本,数据库等分词建立索引,提供查询的API接口。

?

?? SOLR项目下载下来大概30多M,默认采用JETTY作为APPSERVER,和TOMCAT类似的一个开源中间件软件。

?

?? 项目里面主要使用solr+oracle来实现全文搜索的查询,同样,也支持其他的关系型数据库。下面是基于ORACLE表格为数据源的配置。

??

?? 首先确认jetty的端口配置,有时候需要更改,可能端口已经被占用了。

?

?

 <Call name="addConnector">
      <Arg>
          <New class="org.mortbay.jetty.bio.SocketConnector">
            <Set name="port"><SystemProperty name="jetty.port" default="8989"/></Set>
            <Set name="maxIdleTime">50000</Set>
            <Set name="lowResourceMaxIdleTime">1500</Set>
          </New>
      </Arg>
 </Call>

?

?? 假如启动时报端口已经被占用的错误,那么需要更改成其他的端口。

?

?? 2配置data-config.xml文件,假如不存在,那么新建一个,放在目录solr/conf/data-config.xml下面。配置详情

?

<dataConfig>
  <dataSource 
	  driver="ENC(Ji+0Hu8V13iC0zBLfzu4bPZHjtDMpETcttc1ysa0y1maWD4rbpzXdQ\=\=)"
	  url="ENC(cAJkOTDUZcW2epqSuFcQHiVT0PnXaJo2/2E1rUbMMQMgb47SByMPS5mutQYpZmrSvES8DmRs2mk\=)"
	  user="ENC(K0EBhh8/VE0Hot+9ktQZOw\=\=)" 
	  password="ENC(z9let1hb06zgus/7PhReHg\=\=)"  
	  batchSize="100"
  />
  
  <document name="capaa_search">
<entity name="audit" pk="id" 
	query = "select 
solr_sequence.nextval as id
,lg_id
,SESSION#                                 
,to_char(timestamp,'yyyy-mm-dd&quot;T&quot;HH24:MI:SS&quot;Z&quot;') as timestamp     
,SCN                                      
,XID                                      
,SCHEMA_OBJECT                            
,OBJECT_TYPE                              
,COMMAND_TYPE                             
,SQLTEXT                                  
,ACTIONNAME                               
,AUDITLEVEL                               
,RETURNCODE                               
,ERRMSG                                   
,RESOLVED                                 
,REMARK                            
,RECNUMS                                  
,INST_ID                                  
,BIND_DATA                                
,END_IP                                   
,END_SESSION_INFO                         
,RULE_NAME                                   
,lg_audseq                                 
,USERID                                   
,UTYPE_ID                                 
,USERTYPE                                 
,DBUSER                                   
,OSUSER                                   
,APPUSER                                  
,REALUSER                                 
,IP_ADDRESS                               
,MAC_ADDRESS                              
,MACHINE                                  
,APP_NAME                                 
,APP_GNAME                                
,to_char(lg_timestamp,'yyyy-mm-dd&quot;T&quot;HH24:MI:SS&quot;Z&quot;') as lg_timestamp       
,to_char(LOGOFF_TIME,'yyyy-mm-dd&quot;T&quot;HH24:MI:SS&quot;Z&quot;') as logoff_time     
,LOGOFF_LREAD                             
,LOGOFF_PREAD                             
,LOGOFF_PWRITE                            
,SESSION_CPU                              
,SID                                      
,SERIAL#                                  
,SESSIONID                                
,CLIENT_ID                                
,CLIENT_INFO                              
,OS_PROCESS                               
,AUDIT_CLASS_ID                           
,AUDIT_CLASS                              
,AUDIT_LEVEL                              
,RETURN_CODE                              
,lg_errmsg                                   
,DBID                                     
,DBNAME                                   
,lg_resolved                                 
,lg_remark                                   
,lg_recnums                                  
,lg_inst_id                                  
,EUSER_NAME                                
,EGROUP_NAME                               
,EAREA_NAME                                
,ELEVEL_NAME                               
,lg_rule_name   
from
mc$asset_v_audit where ('${dataimporter.request.clean}' != 'false' OR last_modified &gt;= (to_date('${dataimporter.last_index_time}','YYYY-MM-DD HH24:MI:SS')))">
	<field column="TIMESTAMP" name="timestamp" xpath="/RDF/item/date" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'"/>
	<field column="LG_TIMESTAMP" name="lg_timestamp" xpath="/RDF/item/date" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'"/>
	<field column="LOGOFF_TIME" name="logoff_time" xpath="/RDF/item/date" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'"/>
</entity>
 </document> 
</dataConfig>

?

?

?

?

?

?

?

?

?

这里主要是配置管理库的数据源,以及相关的SQL语句。

?

3 配置solrconfig.xml 文件

?

  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
    	<str name="config">data-config.xml</str>
    </lst>
  </requestHandler>

?主要作用是载入上面的配置文件,有点类似web.xml的作用

?

4在浏览器中输入http://ip:port/solr/dataimport?command=full-import&clean=true?地址,回车,开始建立索引

?

5在导入过程中可以在浏览器中输入http://ip:port/solr/dataimport? 来查看导入状态。

?

?

?

?

?

?6在浏览器中输入http://ip:port/solr/admin可以进入 solr的管理页面。

?

?

?

?

?

?

  相关解决方案