.net软件xcopy形式集成solr搜索引擎

简介: Solr 是基于Luncene的开源企业搜索服务,提供了一个打包即用的解决方案[使用Luncene集成化需要处理索引管理、分析器等一系列的问题,自己实现还是相对麻烦的],solr对外以Http协议服务,增加了很多的辅助功能,核心集成luncene.

Solr 是基于Luncene的开源企业搜索服务,提供了一个打包即用的解决方案[使用Luncene集成化需要处理索引管理、分析器等一系列的问题,自己实现还是相对麻烦的],solr对外以Http协议服务,增加了很多的辅助功能,核心集成luncene.

Lucid Imagination is the first commercial company exclusively dedicated to Apache Lucene/Solr open source technology. 提供了商业的解决方案

.net软件中如果绿色集成这个软件比较方便,否则安装一串东西很麻烦,无法体现 .net的xcopy的部署形式,本文针对.net程序集成solr服务的步骤进行描述

另一方面lucene.net(C#版本)的版本更新和Luncene落后不少,因此基于solr还是一个很好的解决方案(solr几乎可以和Luncene同步更新,毕竟两者的偶合不大)

参考官网

http://lucene.apache.org/solr

http://www.lucidimagination.com/

概念

Solr 1.4 Enterprise Search Server.pdf lucidworks-solr-refguide-1.4.pdf 这两本书对solr的增强处理内容和语法等进行了详尽的描述,具体的配置和使用可参考这两本书

SolrCores

It's possible to segment Solr into multiple virtual instances, or cores, each with its own configuration and indices. Cores may be dedicated to a single application or to very different ones, but all are administered through a common administration interface. You can create new SolrCores on the fly, shutdown cores, even replace one running core with another, all without ever stopping or restarting your servlet container.

SolrCores对于需要分组管理索引的情况很有用,如所有的内容在一个索引库太大时可以分开,或者本身就是独立的资源。

SOLR绿色服务配置

由于现有的系统有32位、64的区别,以32位为例说明(64位的性能更高,我测试发现差不多有一倍的提高,JDK、Tomcat是分别发布的不同架构,32位和64位主要是这个区别)

以下是x86架构的目录结构

image

(服务使用的tomcat7,Jetty7 作为服务运行有些麻烦)

JDK的部署:把其他机器的安装好的JDK整个目录放在JDK上

Tomcat7:把其他机器的安装好的tomcat整个目录放在tomcat上, 把Lucid Imagination 的版本安装报SolrInstaller-1.4.1.jar中 lucidworks\webapps\solr.war的 solr.war放在tomcat7\webapps目录下

Solr:solr目录是默认的一些solrcores的配置文件和相关库,默认索引文件也存在这个目录下(coreX是其中的一个core),详细内容参考:http://cid-56b433ad3d1871e3.office.live.com/self.aspx/.Public/solr86.rar 

根目录:启动和服务的运行文件,参考下载:http://cid-56b433ad3d1871e3.office.live.com/self.aspx/.Public/solr86.rar

如:启动服务 start.bat

set JAVA_HOME=%cd%\jdk\

set CLASSPATH=%cd%\jdk\lib;

set PATH=%PATH%;%JAVA_HOME%

set CATALINA_HOME=%cd%\tomcat7

cd %0\..\

tomcat7\bin\catalina.bat run

:: SET /P M=Press ENTER:

solr.xml 对solrcores配置的文件

<?xml version="1.0" encoding="utf-8"?>

<solr persistent="false" sharedLib="lib">

<cores adminPath="/admin/cores" shareSchema="true">

<core name="coreX" instanceDir="coreX" />

</cores>

</solr>

示范coreX目录下的conf关键文件

solrconfig.xml

schema.xml

jdbc.xml:对数据库建立索引的设置

lib下:sqljdbc4.jar sql server的jdbc驱动

data:默认的索引目录

经过如上配置后,可以在任意个部署的机器使用start.bat启动solr服务,stop.bat关闭服务,svc.bat ***安装服务Service,绿色运行solr

出错的话在tomcat7\logs\catalina.****.log 日志中查看原因

启动后,就可以使用solr服务

总入口

http://localhost:8080/solr/

某个solrcore的管理入口(如coreX)

http://localhost:8080/solr/coreX/admin/

数据库导入的人口

http://localhost:8080/solr/coreX/admin/dataimport.jsp?handler=/dataimport

只要按照jdbc.xml建立好数据库,可以使用如上地址导入数据建立索引

.net集成

基于DRY原则,还是使用已有的库最好[自己根据约定的HTTP协议格式写当然完全没有问题]

mausch-SolrNet-0.3.0-0-g9fd45cd.zip

这个是较新的项目

solrsharp-Dec-30-2007.zip

这个项目较早,近来更新比较少

如下SolrNet的一个sample例子效果,实现的效果还是相当的强

 image

 

 

搜索的性能

方案完成后,对性能担心的话,可以看看性能,如果一下收集百万或千万条数据困难的话,可以在MusicBrainz.org下载很多的开放数据 http://musicbrainz.org/doc/Database_Download (最好使用数据库格式的)

我测试在2.8GCPU上的新建索引其中一个文件60万个数据条目约4~5分钟,600万条20~25分钟间完成(64位的版本速度提高查不到一倍),速度还是相当的快,在这个索引上的查询一般几十毫秒就完成了,如果有更高的搜索质量、性能要求,首先可以修改solr的配置,加入相关的插件,一般情况应该可以解决问题(基于Lucene的解决方案实在很多),实在有问题的话可以自己开发定制

至此,我们可以使我们的应用增加了检索的功能。【集成发布的产品和方案注意solr的授权协议】

相关文章
|
24天前
|
jenkins 测试技术 持续交付
解锁.NET项目高效秘籍:从理论迷雾到实践巅峰,持续集成与自动化测试如何悄然改变游戏规则?
【8月更文挑战第28天】在软件开发领域,持续集成(CI)与自动化测试已成为提升效率和质量的关键工具。尤其在.NET项目中,二者的结合能显著提高开发速度并保证软件稳定性。本文将从理论到实践,详细介绍CI与自动化测试的重要性,并以ASP.NET Core Web API项目为例,演示如何使用Jenkins和NUnit实现自动化构建与测试。每次代码提交后,Jenkins自动触发构建流程,通过编译和运行NUnit测试确保代码质量。这种方式不仅节省了时间,还能快速发现并解决问题,推动.NET项目开发迈向更高水平。
34 8
|
12天前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
29 0
|
1月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
|
20天前
|
Java Spring UED
Spring框架的异常处理秘籍:打造不败之身的应用!
【8月更文挑战第31天】在软件开发中,异常处理对应用的稳定性和健壮性至关重要。Spring框架提供了一套完善的异常处理机制,包括使用`@ExceptionHandler`注解和配置`@ControllerAdvice`。本文将详细介绍这两种方式,并通过示例代码展示其具体应用。`@ExceptionHandler`可用于控制器类中的方法,处理特定异常;而`@ControllerAdvice`则允许定义全局异常处理器,捕获多个控制器中的异常。
35 0
|
20天前
|
开发者 持续交付 Android开发
Xamarin开发者的秘密武器:如何通过持续集成与持续部署(CI/CD)实现高效、高质量的软件交付
【8月更文挑战第31天】在当今追求高效、高质量软件交付的时代,Xamarin开发者需像大厨般迅速烹制数字化佳肴,而持续集成(CI)与持续部署(CD)则是关键工具。CI要求开发者频繁将代码集成到共享仓库,利用自动化工具如Azure Pipelines或Jenkins自动编译、测试代码,确保质量。CD在此基础上进一步实现自动化部署,简化从开发到生产的全过程。借助如Visual Studio App Center这样的工具,Xamarin项目得以快速构建、测试并部署至Android和iOS平台,显著提升开发效率和代码质量,助力团队乘风破浪,驶向成功的彼岸。
26 0
|
20天前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
30 0
|
1月前
|
开发框架 NoSQL .NET
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
使用 Asp.net core webapi 集成配置系统,提高程序的灵活和可维护性
|
2月前
|
编解码 数据挖掘 测试技术
对于大屏幕显示系统工程,这通常涉及到硬件(如显示器、投影仪、控制器等)和软件(如内容管理系统、控制软件等)的集成。
对于大屏幕显示系统工程,这通常涉及到硬件(如显示器、投影仪、控制器等)和软件(如内容管理系统、控制软件等)的集成。
|
2月前
|
测试技术 数据库 Python
在系统工程中,软件测试是一个至关重要的环节,它确保软件的质量、可靠性和性能。软件测试通常包括多个阶段,如单元测试、集成测试、系统测试和验收测试等。
在系统工程中,软件测试是一个至关重要的环节,它确保软件的质量、可靠性和性能。软件测试通常包括多个阶段,如单元测试、集成测试、系统测试和验收测试等。
|
2月前
|
传感器 机器学习/深度学习 监控
在视频监控和防盗报警系统工程中,通常包括硬件(如摄像头、传感器、报警器等)和软件(如监控软件、报警管理软件等)的集成。
在视频监控和防盗报警系统工程中,通常包括硬件(如摄像头、传感器、报警器等)和软件(如监控软件、报警管理软件等)的集成。

热门文章

最新文章