Solr单机版搭建Word下载.docx
《Solr单机版搭建Word下载.docx》由会员分享,可在线阅读,更多相关《Solr单机版搭建Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
[root@localhostexample]#
第八步:
关联solr及solrhome。
需要修改solr工程的web.xml文件。
第九步:
启动Tomcat
http:
//192.168.25.154:
8080/solr/
和windows下的配置完全一样。
1.1.3.Solr的使用
添加文档必须有id域,其他域必须在solr的schema.xml中定义。
1.2.配置业务域
schema.xml中定义
1、商品Id
2、商品标题
3、商品卖点
4、商品价格
5、商品图片
6、分类名称
7、商品描述
创建对应的业务域。
需要制定中文分析器。
创建步骤:
把中文分析器添加到工程中。
1、把IKAnalyzer2012FF_u1.jar添加到solr工程的lib目录下
2、把扩展词典、配置文件放到solr工程的WEB-INF/classes目录下。
配置一个FieldType,制定使用IKAnalyzer
修改schema.xml文件
修改Solr的schema.xml文件,添加FieldType:
<
fieldTypename="
text_ik"
class="
solr.TextField"
>
analyzerclass="
org.wltea.analyzer.lucene.IKAnalyzer"
/>
/fieldType>
配置业务域,type制定使用自定义的FieldType。
设置业务系统Field
fieldname="
item_title"
type="
indexed="
true"
stored="
item_sell_point"
item_price"
long"
item_image"
string"
false"
/>
item_category_name"
item_desc"
item_keywords"
multiValued="
copyFieldsource="
dest="
重启tomcat
1.3.搜索服务工程搭建
可以参考xinda-manager创建。
Xinda-search(聚合工程pom)
|--xinda-search-interface(jar)
|--xinda-search-Service(war)
2.使用solrJ管理索引库
使用SolrJ可以实现索引库的增删改查操作。
2.1.添加文档
把solrJ的jar包添加到工程中。
创建一个SolrServer,使用HttpSolrServer创建对象。
创建一个文档对象SolrInputDocument对象。
向文档中添加域。
必须有id域,域的名称必须在schema.xml中定义。
把文档添加到索引库中。
提交。
@Test
publicvoidaddDocument()throwsException{
//第一步:
//第二步:
SolrServersolrServer=newHttpSolrServer("
8080/solr"
);
//第三步:
SolrInputDocumentdocument=newSolrInputDocument();
//第四步:
document.addField("
id"
"
test001"
测试商品"
199"
//第五步:
solrServer.add(document);
//第六步:
solrSmit();
}
2.2.删除文档
2.2.1.根据id删除
创建一个SolrServer对象。
调用SolrServer对象的根据id删除的方法。
publicvoiddeleteDocumentById()throwsException{
solrServer.deleteById("
1"
2.2.2.根据查询删除
publicvoiddeleteDocumentByQuery()throwsException{
solrServer.deleteByQuery("
title:
change.me"
2.3.查询索引库
查询步骤:
创建一个SolrServer对象
创建一个SolrQuery对象。
向SolrQuery中添加查询条件、过滤条件。
。
执行查询。
得到一个Response对象。
取查询结果。
遍历结果并打印。
2.3.1.简单查询
publicvoidqueryDocument()throwsException{
SolrQueryquery=newSolrQuery();
query.setQuery("
*:
*"
QueryResponseresponse=solrServer.query(query);
SolrDocumentListsolrDocumentList=response.getResults();
System.out.println("
查询结果的总记录数:
"
+solrDocumentList.getNumFound());
for(SolrDocumentsolrDocument:
solrDocumentList){
System.out.println(solrDocument.get("
));
}
2.3.2.带高亮显示
publicvoidqueryDocumentWithHighLighting()throwsException{
测试"
//指定默认搜索域
query.set("
df"
//开启高亮显示
query.setHighlight(true);
//高亮显示的域
query.addHighlightField("
query.setHighlightSimplePre("
em>
query.setHighlightSimplePost("
/em>
//取高亮显示
Map<
String,Map<
String,List<
String>
highlighting=response.getHighlighting();
List<
list=highlighting.get(solrDocument.get("
)).get("
StringitemTitle=null;
if(list!
=null&
&
list.size()>
0){
itemTitle=list.get(0);
}else{
itemTitle=(String)solrDocument.get("
}
System.out.println(itemTitle);
3.把商品数据导入到索引库中
3.1.功能分析
8、商品Id
9、商品标题
10、商品卖点
11、商品价格
12、商品图片
13、分类名称
14、商品描述
需要从tb_item,tb_item_cat,tb_item_desc表中查询数据。
Sql1:
SELECT
a.id,
a.title,
a.sell_point,
a.price,
a.image,
b.NAMEcategory_name,
c.item_desc
FROM
tb_itema,
tb_item_catb,
tb_item_descc
WHERE
a.cid=b.id
ANDa.id=c.item_id
ANDa.`status`=1;
Sql2:
tb_itema
JOINtb_item_catbONa.cid=b.id
JOINtb_item_desccONa.id=c.item_id
a.`status`=1
参数:
无
业务逻辑:
taotao-search中实现
1、查询所有商品数据。
2、创建一个SolrServer对象。
3、为每个商品创建一个SolrInputDocument对象。
4、为文档添加域
5、向索引库中添加文档。
6、返回TaotaoResult。
在taotao-manager-web中调用服务。
实现数据导入功能。
3.2.Dao层
返回一个pojo对应查询的sql语句。
publicclassSearchItemimplementsSerializable{
privateStringid;
privateStringtitle;
privateStringsell_point;
privatelongprice;
privateStringimage;
privateStringcategory_name;
privateStringitem_desc;
}
放到taotao-common中。
接口的返回值:
List<
SearchItem>
接口定义:
publicinterfaceSearchItemMapper{
List<
getItemList();
Mapper映射文件:
?
xmlversion="
1.0"
encoding="
UTF-8"
!
DOCTYPEmapperPUBLIC"
-//mybatis.org//DTDMapper3.0//EN"
//mybatis.org/dtd/mybatis-3-mapper.dtd"
mappernamespace="
com.taotao.search.mapper.SearchItemMapper"
<
selectid="
getItemList"
resultType="
mon.pojo.SearchItem"
SELECT
a.id,
a.title,
a.sell_point,
a.price,
a.image,
b.NAMEcategory_name,
c.item_desc
FROM
tb_itema
JOINtb_item_catbONa.cid=b.id
JOINtb_item_desccONa.id=c.item_id
WHERE
a.status=1
/select>
/mapper>
3.3.Service层
在applicationContext-solr.xml中配置SolrServer对象。
@Service
publicclassSearchItemServiceImplimplementsSearchItemService{
@Autowired
privateSearchItemMappersearchItemMapper;
privateSolrServersolrServer;
@Override
publicTaotaoResultimportAllItems()throwsException{
//1、查询所有商品数据。
List<
itemList=searchItemMapper.getItemList();
//2、创建一个SolrServer对象。
//3、为每个商品创建一个SolrInputDocument对象。
for(SearchItemsearchItem:
itemList){
SolrInputDocumentdocument=newSolrInputDocument();
//4、为文档添加域
document.addField("
searchItem.getId());
searchItem.getTitle());
searchItem.getSell_point());
searchItem.getPrice());
searchItem.getImage());
searchItem.getCategory_name());
searchItem.getItem_desc());
//5、向索引库中添加文档。
solrServer.add(document);
//提交修改
//6、返回TaotaoResult。
returnTaotaoResult.ok();
3.3.1.发布服务