NET开发过程中的全文索引使用技巧之Solr.docx
- 文档编号:24517967
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:10
- 大小:44.09KB
NET开发过程中的全文索引使用技巧之Solr.docx
《NET开发过程中的全文索引使用技巧之Solr.docx》由会员分享,可在线阅读,更多相关《NET开发过程中的全文索引使用技巧之Solr.docx(10页珍藏版)》请在冰豆网上搜索。
NET开发过程中的全文索引使用技巧之Solr
.NET开发过程中的全文索引使用技巧之Solr(转)-ct
前言:
相信许多人都听说过.net开发过程中基于L实现的全文索引,而Solr是一个高性能,基于Lucene的全文搜索服务器。
同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引引擎,这里我就绕过Lucene,直接说Solr的应用了,总之,Solr比Lucene更加方便简洁好用,而且上手快,开发效率高。
Solr应用场景:
涉及到大数据的全文搜索。
尤其是电子商务平台还有现在流行的云计算,物联网等都是需要强大的数据量作为支撑的,使用Solr来进行数据检索最合适不过了,而且Solr是免费开源的,门槛低、投资少见效快。
关于Solr的一些优点我这里就不在累赘陈述了,园子里也有很多大神也写了很多关于Solr的技术博文,我这里也只是抛砖引玉,见笑了。
好了,这里就开始Solr的奇幻之旅吧
基于.NET平台下的Solr开发步骤
一、搭建Solr服务器,具体步骤如下:
1.安装JDK,因为是.NET平台,不需要安装JRE、JAVA虚拟机,只安装JDK即可,而且安装JDK不需要手动去配置环境变量,它会自动帮我们配置好环境变量,很方便,这里我安装的是jdk1.7,官网地址:
2.安装Tomcat8.0,官网地址:
http:
//tomcat.apache.org/download-80.cgi ,安装完成后启动MonitorTomcat,浏览器地址栏输入 http:
//localhost:
8080/ ,能进入说明安装成功
3.下载Solr,这里我用的是Solr4.4版本,下载后进行下列配置
(1)解压Solr4.4,创建Solr目录,比如D:
/SorlServer/one,将解压后的Solr4.4中的example目录下的Solr文件夹中的所有文件拷贝到创建的目录中
(2)创建Solr Web应用,具体步骤,将解压后的Solr4.4中的dist目录下的Solr-4.4.0.war文件拷贝到Tomcat下,比如C:
\Program Files\Apache Software Foundation\Tomcat 7.0\webapps下,重命名为one.war,启动Tomcat后该文件会自动解压,进入到D:
\SorlServer\one\collection1\conf下,打开solrconfig.xml文件,找到
c:
/SorlServer/one/data}
注意:
这一步很重要:
打开C:
\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\One\WEB-INF下的web.xml文件,找到
将env-entry-value值改为D:
/SorlServer/one,如下:
/SorlServer/one
(3)将解压后的Solr4.4下的/dist/solrj-lib目录中的所有jar包拷贝到C:
\Program Files\Apache Software Foundation\Tomcat 7.0\lib中
(4)停止Tomcat,然后再启动,访问 http:
//localhost:
8080/ one ,即可打开
注意:
如果是开发英文网站,我们就不需要使用第三方的分词配置,Solr本身就内置支持英文分词,如果是其他语种比如小语种(日语、意大利、法语等等),大家可以去网上找相关的分词包,这里我们以中文分词为例,毕竟国内大部分网站都是中文为主的。
4.配置中文分词,国内常用的分词器( 庖丁解牛 、 mmseg4j 、 IKAnalyzer ),这里我用的是IKAnalyzer,这个分词器比较活跃而且更新也快,挺好用的, 具体步骤如下:
(1)将IKAnalyzer的jar包以及IKAnalyzer.cfg.xml都复制到C:
\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\one\WEB-INF\lib下
(2)配置D:
\SorlServer\one\collection1\conf下的schema.xml,添加如下配置:
-- 分词配置 -->
(3)停止Tomcat,然后再启动,访问http:
//localhost:
8080/one/#/collection1/analysis,即可进行测试
以上是Solr服务器端的相关配置工作
二、开始基于.NET平台的Solr开发:
1.下载Solr客户端组件,我用的是园子里的Terry大哥的 EasyNet.Solr ,地址在微软开源站:
,
Terry大哥已经把solr客户端封装的很完善了,里面封装了很多现成的方法和参数配置,我们直接可以拿过来用,利用Easynet.solr创建索引,然后再查询索引,具体使用方法如下:
(1)下载EasyNet.Solr源码直接放到项目中,也可以将源码生成Dll组件后添加到项目引用进行使用,把源码放到项目中最好不过了,我们也可以对其进行调整来满足自己的需要
(2)创建索引实体类,就是我们要保存的索引数据,比如创建一个产品实体类
usingSystem;usingSystem.Collections.Generic;
namespaceSeek.SearchIndex
{
publicpartialclassIndexProductModel
{publicIndexProductModel(){}
#regionPropertiespublicintID{get;set;}publicintProductID{get;set;}publicstringClassPath{get;set;}publicintClassID1{get;set;}publicintClassID2{get;set;}publicintClassID3{get;set;}publicstringTitle{get;set;}publicstringModel{get;set;}publicstringPriceRange{get;set;}publicstringAttributeValues{get;set;}publicstringProductImages{get;set;}publicintMemberID{get;set;}publicSystem.DateTimeCreateDate{get;set;}publicSystem.DateTimeLastEditDate{get;set;}publicstringFileName{get;set;}publicstringProductType{get;set;}publicstringSummary{get;set;}publicstringDetails{get;set;}publicstringRelatedKeywords{get;set;}publicintMemberGrade{get;set;}#endregion
}
}
(3)配置Solr服务器端的xml,就是将咱们的这个索引实体类配置到Solr服务器上,进入D:
\SorlServer\one\collection1\conf,打开 schema.xml 文件,配置如下
--快速高亮配置termVectors="true"termPositions="true"termOffsets="true"-->
(4)开始创建索引,最好能写一个生成索引的客户端程序,我这里提供一下自己的索引器关键代码
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSeek.SearchIndex;usingSystem.Data;usingSystem.Threading;usingSystem.Configuration;usingSystem.Reflection;usingEasyNet.Solr;usingEasyNet.Solr.Impl;usingEasyNet.Solr.Commons;usingSystem.Xml.Linq;usingEasyNet.Solr.Commons.Params;usingSystem.Threading.Tasks;
namespaceSeek.SearchIndex
{///
publicenumState{///
publiclongCurrentIndex{get{returncurrentIndex;}set{currentIndex=value;}}
privateint_startId=AppCongfig.StartId;
publicintStartId{get{return_startId;}set{_startId=value;}}
///
privateIndexer(Main_form){form=_form;productsCount=DataAccess.GetCount(0);//产品数统计form.fullerTsslMaxNum.Text=productsCount.ToString();form.fullerProgressBar.Minimum=0;form.fullerProgressBar.Maximum=productsCount;}publicstaticIndexerGetInstance(Mainform){if(instance==null){lock(syncLock){if(instance==null){instance=newIndexer(form);}}}returninstance;}#endregion
///
///
PropertyInfo[]properites=typeof(IndexProductModel).GetProperties();//得到实体类属性的集合string[]dateFields={"CreateDate","LastEditDate"};stringfield=string.Empty;//存储fieldnameforeach(PropertyInfopropertyInfoinproperites)//遍历数组{objectval=pro[propertyInfo.Name];if(val!
=DBNull.Value){model.Add(propertyInfo.Name,newSolrInputField(propertyInfo.Name,val));}}docs.Add(model);
StartId=Convert.ToInt32(pro["ID"]);}GetStartId();lock(syncLock){if(currentIndex<=productsCount){form.fullerProgressBar.Value=(int)currentIndex;}form.fullerTsslCurrentNum.Text=currentIndex.ToString();}varresult=solr.Update("/update",newUpdateOptions(){Docs=docs});}
///
=null){vardocs=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NET 开发 过程 中的 全文 索引 使用 技巧 Solr
![提示](https://static.bdocx.com/images/bang_tan.gif)