



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Apache Solr初体验四前几次我们讲到了solr的基本用法和配置文件,接下来就开始进入我们真正的代码之旅啦。1)首先以一个简单的程序来开头:Java代码1. publicstaticvoidmain(Stringargs)throwsSolrServerException,IOException,ParserConfigurationException,SAXException2. 3. /设置solr.home,注意这时通过环境变量是solr.solr.home4. System.setProperty(solr.solr.home,E:solr);5. /初始化容器,让它加载solr.home的配置文件6. CoreContainer.Initializerinitializer=newCoreContainer.Initializer();7. CoreContainercoreContainer=initializer.initialize();8. 9. EmbeddedSolrServersolrServer=newEmbeddedSolrServer(coreContainer,);10. /构造参数列表11. SolrQuerysolrQuery=newSolrQuery();12. Mapmap=newHashMap();13. map.put(FacetParams.FACET_DATE,manufacturedate_dt);14. map.put(FacetParams.FACET_DATE_START,2004-01-01T00:00:00Z);15. map.put(FacetParams.FACET_DATE_END,2010-01-01T00:00:00Z);16. map.put(FacetParams.FACET_DATE_GAP,+1YEAR);17. map.put(indent,on);18. map.put(wt,xml);19. map.put(hl.fl,name);20. SolrParamsparams=newMapSolrParams(map);21. solrQuery.add(params);22. solrQuery.setFacet(true);23. solrQuery.setFields(name,price,score);24. solrQuery.setQuery(solr);25. solrQuery.setSortField(price,SolrQuery.ORDER.asc);26. solrQuery.setHighlight(true);27. 28. System.out.println(solrQuery.toString();29. 30. QueryResponsequeryResponse=solrServer.query(solrQuery);31. System.out.println(queryResponse.toString();32. System.out.println(共找到:+queryResponse.getResults().getNumFound()+个结果);33. /解析返回的参数34. SolrDocumentListsdl=(SolrDocumentList)queryResponse.getResponse().get(response);35. for(inti=0;isdl.size();i+)36. Objectobj=sdl.get(i).get(manufacturedate_dt);37. Stringdate=;38. if(obj!=null)39. date=newSimpleDateFormat(yyyy-MM-dd).format(Date)obj);40. 41. 42. System.out.println(SolrDocument)sdl.get(i).get(name)+:+date+:+(sdl.get(i).get(price);43. 44. 这时我们所用到的是EmbeddedSolrServer,它是用于嵌入式地solr服务,这里我们不需要向外提供服务,所以我们就用到这个。另外有一个CommonsHttpSolrServer这个类是用于发送指令的服务,例如我们需要发送HTTP命令来查询,就可以用这个。下面我们分析一下代码,首先,我们设置了一个环境变量的名称为solr.solr.home,是这个,你没看错,确实是要这样。接下来我们初始化容器,让它加载solr.home的配置文件等。接下来的一系统代码就是构造参数列表。我们构造完成后的参数列表是这样的:facet.date.start=2004-01-01T00%3A00%3A00Z&indent=on&facet.date=manufacturedate_dt&hl.fl=name&facet.date.gap=%2B1YEAR&wt=xml&facet.date.end=2010-01-01T00%3A00%3A00Z&facet=true&fl=name%2Cprice%2Cscore&q=solr&sort=price+asc&hl=true跟我们直接在浏览器输入的不太一样,因为它是进行过编码的。构造完成后我们就可以用solrServer进行查询了。查询得到的结果是JSON格式的,注意,通过程序来查询得到的都是JSON格式,而不是XML格式,不过这样更好,方便我们进行接下来的解析。接下来的代码就是解析内容啦,应该很容易看懂的。2)接下来的我们就尝试自己写一个程序来进行索引,而不用post.jar。程序代码如下:Java代码1. publicstaticvoidmain(Stringargs)throwsIOException,ParserConfigurationException,SAXException2. 3. System.setProperty(solr.solr.home,e:solrIndex);4. 5. /这下面三行代码主要是用于加载配置文件6. SolrConfigsolrConfig=newSolrConfig(E:solrIndexconfsolrconfig.xml);7. FileInputStreamfis=newFileInputStream(E:solrIndexconfschema.xml);8. IndexSchemaindexSchema=newIndexSchema(solrConfig,solrconfig,fis);9. 10. SolrIndexWritersiw=newSolrIndexWriter(solrIndex,E:solrIndex,newStandardDirectoryFactory()11. ,true,indexSchema);12. Documentdocument=newDocument();13. document.add(newField(text,测试一下而已,Field.Store.YES,Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS);14. document.add(newField(test_t,再测试一下而已,Field.Store.YES,Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS);15. siw.addDocument(document);16. 17. mit();18. siw.close();19. 20. SolrCoresolrCore=newSolrCore(E:solrIndex,indexSchema);21. 22. SolrIndexSearchersis=newSolrIndexSearcher(solrCore,indexSchema,solrIndex,23. newStandardDirectoryFactory().open(E:solrIndex),true);24. TopDocsdocs=sis.search(newTermQuery(newTerm(test_t,再),1);25. 26. System.out.println(找到+docs.totalHits+个结果);27. 28. for(inti=0;idocs.scoreDocs.length;i+)29. System.out.println(sis.doc(docs.scoreDocsi.doc).get(test_t);30. 31. 32. 代码不难理解,所以就没写注释了。主要是那段加载配置文件的代码。接下来是添加索引,然后是查询索引,删除的比较简单,直接一句代码Java代码1. solrServer.solrServer.deleteById(SOLR1000);或者Java代码1. solrServer.deleteByQuery()都比较简单。3)接下来我们讲一下,很可能会在项目中用到的,就是中文分词,中文分词有蛮多的,有IK,Paoding,mmseg4j,还有另外一些中科院什么地方的。但个人建议用IK或者mmseg4j,这两个有solr都有比较直接的支持,paoding也可以,但可能需要自己写类继承BaseTokenizerFactory然后再进行配置,不难。上面的例子就是用到中文分词了,如果你发现找不到结果,那很正常,因为还没添加中文分词,你可以把中文改成英文,再查一下,就可以查出来了。需要添加中文分词,我们要在schema.xml中做文章。找到types标签,在里面找到你想要进行中文分词的类型,比如text类型,我们想要让它的内容用中文分词来进行分析,可以进行配置:Xml代码1. 2. 3. 8. 9. 10. 11. 12. 13. 14. 15. 20. 21. 22. 23. 你可以先不理解filter的那些东西,但你一定要理解tokeni
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华南欧式花园施工方案
- 文达咨询策划方案
- 校长在国旗下讲话:拒绝校园欺凌共筑和谐校园
- 绍兴人民医院供热燃气锅炉房建设项目
- 公文写作排版部分
- 地下室出租营销方案模板
- 农牧企业咨询培训方案
- 2025年注册会计师(CPA)考试战略管理科目模拟试题集
- 人力资源行业工艺流程与标准
- 2025自考专业(工商企业管理)考前冲刺练习试题及答案详解【考点梳理】
- 医院反恐知识培训课件
- 2025版电力工程施工临时交通管制合同
- 消毒灭菌物品管理课件
- 2025年食堂人员培训试题及答案
- 烘烤箱作业指导书
- 采油安全培训课件
- 出入境法律法规培训课件
- 肩周炎护理教学课件
- 人教版二年级下册小学数学全册导学案(学前预习单)
- 雨污水管网工程施工组织设计方案
- 国有资产盘活利用市场化路径研究
评论
0/150
提交评论