solr 4.9 学习

1.下载solr 4.9.0 下载地址:http://archive.apache.org/dist/lucene/solr/4.9.0/solr-4.9.0.zip。
2.解压solr-4.9.0.zip,把solr-4.9.0\dist 目录中的solr-4.9.0.war 解压放到tomcat7的webapps 目录中,修改名称为solr.




3.在f盘建立下面目录,F:\test\solrdemo,然后把E:\solr-4_9_0\example目录中的solr 复制到
F:\test\solrdemo 目录。




4. 打开solrconfig.xml 注释掉下面的内容

<!--
  <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />

  <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />

  <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />
-->
然后将contrib/extraction/lib,/contrib/clustering/lib,dist/,contrib/langid/lib/,dist/,contrib/velocity/lib中的jar 包复制到
webapps\solr\WEB-INF\lib 目录中。

修改存储路径:  <dataDir>${solr.data.dir:}</dataDir>
为:
  <dataDir>${solr.data.dir:F:/test/solrdemo/solr/data}</dataDir>




启动tomcat ,访问http://localhost:8080/solr




5.把example\resources中的log4j.properties 复制到solr-tomcat-7.0.67\webapps\solr\WEB-INF\classes 文件夹(class如果没有自己建立一下)
二,添加分词功能:
解压:IK_Analyzer_2012FF_hf1.zip 把IKAnalyzer.cfg.xml,stopword.dic 复制到\webapps\solr\WEB-INF\classes 目录, IKAnalyzer2012FF_u1.jar 复制到solr-tomcat-7.0.67\webapps\solr\WEB-INF\lib目录。

在F:\test\solrdemo\solr\collection1\conf中 schema.xml 添加IKAnalyzer配置:
<!-- 引入 IKAnalyzer -->
  <fieldType name="text_ik" class="solr.TextField"> 
  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  </fieldType> 


  <!--IKAnalyzer Field  -->
  <field name="title_ik" type="text_ik" indexed="true" stored="true" />
  <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>




重启tomcat, 在anaysis 中测试分词 ,filedtype:title_ik

测试结果:



三,dataimport 关系型数据库数据导入solr索引库
在F:\test\solrdemo\solr\collection1\conf 目录新建data-config.xml 文件内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig> 
<dataSource type="JdbcDataSource" 
driver="oracle.jdbc.OracleDriver"    
url="jdbc:oracle:thin:@192.168.6.2:1521:YUN"
user="yunboceceshi"   
password="yun"/>
<document name="product_tt"> 
<entity name="product" pk="id"
  query="select product_id,product_name,unit_price,unit from product" 
  deltaQuery="select product_id,product_name,unit_price,unit from product"
  deltaImportQuery="select product_id,product_name,unit_price,unit from product"
  logLevel="debug"
  > 
<field column="PRODUCT_ID" name="id"/> 
<field column="PRODUCT_NAME" name="product_names"/>
<field column="UNIT_PRICE" name="product_price"/>
<field column="UNIT" name="product_description"/> 

</entity>
</document>
</dataConfig>

注意:column 的值一定要大写,否则导数据不成功

在F:\test\solrdemo\solr\collection1\conf 中的solrconfig.xml 中添加:
  <requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst> 
</requestHandler>


在F:\test\solrdemo\solr\collection1\conf 中的schema.xml 中添加:

<field name="product_names" type="text_ik" indexed="true" stored="true"/>
<field name="product_price"  type="float" indexed="true" stored="true"/>
<field name="product_description" type="text_ik" indexed="true" stored="true" />

<field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> 
<copyField source="product_names" dest="product_keywords"/>
<copyField source="product_description" dest="product_keywords"/>


重启tomcat ,选择dataimport 菜单测试。





四,使用java 代码访问solr

package com.boce;

import java.io.IOException;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;

public class SolrOk {

private String url = "http://localhost:8080/solr";


// 创建索引
public void testCreateIndex() throws SolrServerException, IOException {
String urlString = "http://localhost:8080/solr";

SolrServer solrServer = new HttpSolrServer(urlString);
for (int i = 0; i < 5; i++) {
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "c0001");
document.addField("product_names", "竞买"+i);
// 商品名称
document.addField("product_price", 86.5f);
// 商品价格
// document.addField("product_picture", "382782828.jpg");
// 商品图片
document.addField("product_description",
"这是竞买信息的描述,内容渤海商品交易所信息内容");
//商品描述
// document.addField("product_catalog_name", "javabook");
// 商品分类
UpdateResponse response = solrServer.add(document);


}
// 提交
solrServer.commit();
}



public void deletebyId(){
String id="vg106422";
SolrServer solrServer =  new HttpSolrServer(url);
try {
UpdateResponse response = solrServer.deleteById(id);

solrServer.commit();

} catch (SolrServerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



}



public void testSearch() throws SolrServerException {
String urlString = "http://localhost:8080/solr";
SolrServer solr = new HttpSolrServer(urlString);
// 查询对象
SolrQuery query = new SolrQuery();
// 设置查询条件,名称“q”是固定的且必须 的
// 搜索product_keywords域,product_keywords是复制域包括product_name和product_description
query.set("q", "product_names:竞买");
query.setStart(10);
query.setRows(50);


// 请求查询
QueryResponse response = solr.query(query);
// 查询结果
SolrDocumentList docs = response.getResults(); // 查询文档总数
System.out.println("查询文档总数" + docs.getNumFound());
for (SolrDocument doc : docs) {
// 商品主键
String id = (String) doc.getFieldValue("id");
// 商品名称
String product_name = (String) doc.getFieldValue("product_names");
// 商品价格
Float product_price = (Float) doc.getFieldValue("product_price");

// 商品价格
String desc = (String) doc.getFieldValue("product_description");

System.out.println(product_name + "--" + product_price+"---"+desc);
}
}

// 商品图片 String product_picture = (String)
// doc.getFieldValue("product_picture"); //商品分类 String product_catalog_name
// = (String) doc.getFieldValue("product_catalog_name");
// System.out.println("=============================");
// System.out.println(id); System.out.println(product_name);
// System.out.println(product_price); System.out.println(product_picture);
// System.out.println(product_catalog_name); }

public static void main(String[] args) {
SolrOk ok = new SolrOk();
try {


ok.testCreateIndex();

//ok.testSearch();


//ok.deletebyId();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

猜你喜欢

转载自gjp014.iteye.com/blog/2392172
4.9