lucene nutch solr及hadoop的区别和联系
Lucene是索引,Nutch是完整的搜索引擎实现,是基于Lucene来实现的。
可以这么理解,Lucene是一个基础的东西,主要用于建立数据的索引,通过开发人员自己调用Lucene api使用。Nutch是一个做好的成品,配置好后就是一个简单的百度,可以采集、搜索数据等等,Lucene是百度服务器上搜索操作时具体执行的代码。
处理高并发的六种方法
1:系统拆分,将一个系统拆分为多个子系统,用dubbo来搞。然后每个系统连一个数据库,这样本来就一个库,现在多个数据库,这样就可以抗高并发。
2:缓存,必须得用缓存。大部分的高并发场景,都是读多写少,那你完全可以在数据库和缓存里都写一份,然后读的时候大量走缓存不就得了。毕竟人家redis轻轻松松单机几万的并发啊。没问题的。所以你可以考的虑考虑你的项目里,那些承载主要请求读场景,怎么用缓存来抗高并发。
3:MQ(消息队列),必须得用MQ。可能你还是会出现高并发写的场景,比如说一个业务操作里要频繁搞数据库几十次,增删改增删改,疯了。那高并发绝对搞挂你的系统,人家是缓存你要是用redis来承载写那肯定不行,数据随时就被LRU(淘汰掉最不经常使用的)了,数据格式还无比简单,没有事务支持。所以该用mysql还得用mysql啊。那你咋办?用MQ吧,大量的写请求灌入MQ里,排队慢慢玩儿,后边系统消费后慢慢写,控制在mysql承载范围之内。所以你得考虑考虑你的项目里,那些承载复杂写业务逻辑的场景里,如何用MQ来异步写,提升并发性。MQ单机抗几万并发也是ok的。
4:分库分表,可能到了最后数据库层面还是免不了抗高并发的要求,好吧,那么就将一个数据库拆分为多个库,多个库来抗更高的并发;然后将一个表拆分为多个表,每个表的数据量保持少一点,提高sql跑的性能。
5:读写分离,这个就是说大部分时候数据库可能也是读多写少,没必要所有请求都集中在一个库上吧,可以搞个主从架构,主库写入,从库读取,搞一个读写分离。读流量太多的时候,还可以加更多的从库。
6:solrCloud:
SolrCloud(solr 云)是Solr提供的分布式搜索方案,可以解决海量数据的 分布式全文检索,因为搭建了集群,因此具备高可用的特性,同时对数据进行主从备份,避免了单点故障问题。可以做到数据的快速恢复。并且可以动态的添加新的节点,再对数据进行平衡,可以做到负载均衡:
我认为知识管理系统的作用是分为三部分的:1:将所有的企业知识信息积累起来 发动各部门员工贡献自己所掌握的企业知识,积少成多积累企业知识财产,每个员工对于企业的发展和业务肯定都有自己独到的理解,众人拾柴火焰高,每个人都将其整理归纳进知识管理系统中,企业的有形财富和无形财富也会越来越多。
2:将积累的企业知识信息分类整理出来 构建企业知识库,知识管理系统可以将企业的各种知识信息(案例、项目经验、ppt、活动策划等等)进行有序管理。一个企业从零开始发展到现在的规模,肯定是有其独到之处的,所以如果企业将这些项目经验、案例、策划等知识财富分门别类整理起来,对于企业的日后发展来说还是非常有宝贵的参考价值的。
3:将分类整理出来的企业知识信息应用起来 知识管理系统可以让知识信息的调用更加的简单,节省不必要的工作时间,提升企业工作效率。根据各部门的各个岗位制定相应的学习和培训计划,为企业的人才储备做足保障。
大型企业的异地文件的协同调用更加的简单,为异地部门和员工做好知识保障。 :知识管理系统的作用 。
什么是知识管理系统-搜狗问问
关于什么是知识管理系统,并没有一个统一的定义。根据组织状况的不同,每个组织都需要发现适合自己的知识管理系统。当我们讨论知识管理系统时,我们集中在那些能够有效存储信息,同时能够实现高效的知识流转、共享、发现的系统。例如:
l 一种能够按照索引访问那些关键的商业资料(例如销售概况或者员工对企业流程的建议)的文档管理系统。
l 一个专业技能发现工具,使用它可以发现在整个组织或者企业中,那些人在特定的领域中具备了较高的专业的技能,并探讨如何分享这些技能。
您的组织是否需要一个知识管理系统?
其实目前在很多的公司中都存在着很好的“知识管理系统”,当然这种系统是一种非正式的、零散的、不系统的应用,同时这种自发的系统主要是手工操作的系统。例如企业的经理们经常使用网络上的共享硬盘或者是Exchange中的公用文件夹来储存重要的资料,同时经理们主要通过电话或者电子邮件的形式对于企业内人员进行观察,从而发现那些专业技能方面的行家里手。
这些非正式的、零散的、不系统的应用可以解决部分企业知识管理中的问题,但是随着组织或企业的成长,特别是地域的扩张,一个自动化的知识管理系统就显示出非常重要的意义,相对与原始的手工知识管理它可以为企业带来更加巨大的利益。它通过更好的组织信息、分享信息、使用信息以及提供搜寻功能,使得企业的员工和各级经理们可以容易的在最合适的时间找到最合适的文档并能找到拥有某种核心能力的最合适职员。
成功的知识管理实施的关键是什么?
l 与任何大型信息系统实施一样,高层的支持对于知识管理系统实施的成败是十分关键的。由于大部分企业或者组织中都没有专门的部门负责知识管理,在实施过程中,高层管理人员必须既要支持系统的实施,又要支持一个新的部门的成立---一个负责全组织内知识管理的部门。高层的支持必须是竭尽全力的,这种支持来自与高层对于知识管理的正确认识和对知识管理对企业价值的认知。
l 信息的手工输入是知识管理系统中对信息进行分类和组织的关键问题。许多管理人员期望计算机可以自动产生一个令系统用户满意的分类(信息组织方案)。这是一个错误的设想,对新信息的分类和对关键词的组织都是决定系统成败的任务。在这个过程中,技术可以发挥部分作用,
知识管理系统应该包括哪些内容?
1、维护有效的关系网
知识的积累是伴随着交流产生的。如果没有交流,在每个人的头脑里面或许也会有知识,但是,这些知识是静态的、孤立的。他只能被拥有它的人使用,不能交流,并且如果这个人不存在了,这些知识也就不存在了,所以也就不能积累,也谈不上什么管理。除了在正式的学习中学到的专业知识以外,大多数的知识,尤其是隐性知识,都是在交流中学习到的。知识管理首先要建立有效的沟通途径。他不但告诉我们哪些资源是可以利用的,还要告诉我们这些资源的有效程度,并根据实际的效果动态的进行维护。 2、资源列表
在网络时代,取得识不再成为学习的瓶颈,取而代之的是如何有效的获取知识。一个有效的管理的收藏夹可以帮助我们很多,但是如果它不能把资源的列表和知识的提取联系起来,那么只能是一个静态的列表。同时,我们只能利用有效的组织收藏夹来记录信息,而它本身却不能给我们任何建议。而这些应该是一个优秀的知识管理系统所应该具备的。 3、知识提取
主要是从交流和其它资源中提取知识。有了上述两项,这个内容是水到渠成的。 4、维护动态知识视图
知识是对信息的提取和整理。而信息是什么?信息是熵的负增加,也就是增加系统的有序性。显然,不但对于不同的系统,同样的数据意味着不同的信息,对于一个系统的不同阶段,同样的数据也不一定总意味着相同的信息。例如,在同一个房间里面住着两个人,A和B。早上A先起床,想到外面走走,不过看到外面下雨,就没有出去。这时候另外来了一个人C,向A和B说:“外面下雨了。”这样的一个消息,对于A来说并不是信息,因为他已经知道了这条消息,对于他来说,没有消除任何的不确定性。而对于事先不知道外面是否下雨的B来说,则是一条消息。如果这个时候外面又进来了D,说了同样的一句话,那么这个时候不论是对于A还是对于B,都不再是信息,因为对于他们来说,这个消息都是确定的。
知识既然是建立在信息的基础上的,自然也会继承信息的这个特点,也就是对于不同的系统、对于同一个系统的不同状态具有不同的特征。因此,不论是知识的分类,还是索引,都应该具有动态的特征。相同的知识点对于不同的人来说有着不同的分类、索引方式,即使对于同一个人,也可能给予不同的考虑,对知识点建立多种视图。例如,对于一个财务经理而言,一个计算个人所得税的的公式可能既在他的个人理财体系中出现(用来计算实际的收入),同时也在他的公司管理体系中出现(计算员工的所得税纳税情况)。
一个知识点加入一个知识管理系统后,可能存在一段时间,在各个视图中出现的频率很高。然而经过一段时间,要么是慢慢的用处变得不重要,要么是已经被使用者消化,成为其内在的知识。 5、知识检索
一个有效的建立起来的视图是有效的利用知识点的基础,但是知识本身还是需要有效的检索途径。这不仅仅因为建立视图的时候需要对原有的知识点进行检索,而且视图是动态维护的,而且视图之间往往有着很多的联系。 6、有关知识管理的建议
知识管理系统不应该仅仅是被动的,相反,它应该能够积累的数据和一些规则提出一些有效的建议。
知识管理系统的应用介绍
知识库系统:知识库是TFS IRP系统里主要的对象,负责组织和管理知识。
可以根据需要,为企业创建不同的知识库。TFS IRP系统支持多个知识库同时存在。
支持可视化的工作流引擎驱动知识进行全生命周期管理。 支持自定义审批业务规则,结合工作流进行知识的快速审批。
支持与各业务系统进行知识交换的WebService、API接口 支持知识的打分、评价、收藏、转发,利用群体智慧来挖掘经典知识。 专家系统:作为企业智力资源的载体,专家集中了企业的经验和智慧,发掘和利用专家的经验和智慧,可以更好的完成知识的传递和转换。
用户可以通过专家系统,找到系统内的专家,对专家进行点对点的提问。问答系统:一个好问题胜过一个好答案,用户在日常工作生活中遇到的各种问题,都可以通过问答系统进行提问,其他用户可以对问题进行回答,也可以通过问答系统直接向专家进行提问,专家用户在登录系统后,可以在问答系统中直接进行答复和处理。
项目管理系统:每一项工作的完成都离不开团队的协作,如何将协作中产生的点滴信息和知识进行记录和总结是项目管理系统要解决的问题。在项目管理中,可以进行项目的全周期管理,可以进行项目的创建、授权、记录项目动态,进行任务分配,总结项目文档等工作,可以全面的完成项目过程的记录和总结。
微博系统微博系统可以让用户将日常的点滴知识进行记录,可以对别人的知识进行转发和评论,使知识可以在组织内流转。社会化传播系统以社会化传播为手段,通过社会化传播,让信息动起来!社会化传播可以加速信息的流动,同时,关注关系可以让合适的知识传递到需要的人面前。
在IRP内,一切皆微博,每个业务动作都会自动的以微博的方式传递出去。全文检索系统基于solr和切词系统的全文搜索服务器。
智能推荐系统根据用户的浏览轨迹、收藏行为、检索行为,关注行为、知识等级等信息,系统自动推荐给用户与之最相关的知识。统计排行系统系统可以统计用户信息、登录信息、浏览信息、知识的数量、评论的数量、关注的数量等各种信息,系统提供相应的报表信息,对系统运营数据进行解读。
智能关联系统系统可以根据知识相关信息,自动的相互管理关联。LOTUS知识管理体系IBM/LOTUS围绕着知识管理包含的“人、场所和事件”三要素,建立专家网络和内容管理,方便用户和员工获得所需的知识,设立企业社区供员工共享知识和相互协作,开展企业培训,帮助员工自主学习,以提高企业的整体素质。
IBM/LOTUS提出了从总体上可分为企业应用集成层、协同工作/发现层、知识管理应用层和知识门户层的知识管理框架,每层都着重介绍了其所使用的知识管理技术和工具。LOTUS所提出的知识管理体系框架涉及的技术工具包括文档管理技术、群件技术、LOTUSNOTES、LOTUSKstation、LOTUSDiscouveryServer和IBMDomino等。
其中,LOTUSKstation是具备知识管理功能的知识门户服务器,LOTUSDiscouveryServer是知识发现服务器。两者共同组成了LOTUS的知识发现系统(KnowledgeDiscoverySystem),并与IBMDomino服务器结合提供当前市场上功能最强大的知识管理解决方案。
西门子公司的知识管理体系虽说在知识管理方面走在前列的大多为软件、咨询公司,但作为传统企业代表的西门子公司,早在1997年就通过构建和利用适合自身发展的知识管理体系,达到了整体提升公司核心竞争力的目的。西门子的知识管理体系分为企业内外两个部分,外部主要涉及到企业日常对外活动、活动场所和活动主体;内部可以分为战略及评价、运作业务和支撑结构三大类。
具体包括制定知识作为公司资产的商业战略、培养相互信赖的知识共享文化和知识型组织,建立知识市场、确立知识资产,确定知识内容和结构、设置知识度量制并建立评估系统和模型、培养知识工人、采用知识技术使新知识行为成为可能并驱动其产生。整个框架内外部通过信息、最佳实践和研究、经验反馈等进行交流。
西门子除了采用通信网络、文档管理、群件技术等常见技术外,最为关键的是采取了门户技术。在一个集成的门户中,员工可以有权限地交流和共享知识,并通过搜索跨越不同部门的障碍获得所需的知识。
万宝公司的知识管理体系国内构建知识管理体系的企业对知识管理体系结构可谓仁者见仁,智者见智。作为国内首个知识管理畅饮者的万宝公司对企业构建知识管理体系也有自己独特的看法:企业首先应该意识到知识是企业无形的资产和财富,只有通过知识管理,利用科技将人与信息充分结合并创造出知识分享的文化,加速人员学习、创造及应用知识,才能达到组织目的,进而提高企业的核心竞争力。
万宝公司提出的知识管理体系是建构在加强人员交流互动协作和良好的组织文化环境之上的,通过知识地图、社群运作模式和知识分享文化及行为规范来建立企业的知识网。在国外,知识管理体系已被成功地实施于众多企业,尤其在咨询业、制造业、IT业等行业。
不同行业中的知识管理体系有不同的着重点:咨询业在设计知识管理体系结构时,需要系统综合地考虑局部创新力量如何积累、如何传递到应用中。
知识库和知识管理系统、知识管理平台、知识社区等之间是什么样的关
以下信息来自于kmpro知识管理 知识库,知识管理系统,知识管理平台,基本上都是一件东西,就是用做知识管理的IT系统。
知识社区,是指大家登陆一个网上社区,进行对某些知识的交流,是知识管理系统中的一个模块。 以下是kmpro知识管理系统的模块供参考 深蓝KMPRO知识管理平台——是深蓝海域公司创新研发,基于互联网架构,快速分析企业知识结构、分类存储知识数据、共享知识应用、提升企业管理效率,增值企业知识资产,提升企业核心竞争力的软件系统。
深蓝KMPRO知识管理平台主要集成了: 1 知识地图分类系统 2 知识采集发布评论系统 3 知识浏览下载门户 4 知识搜索引擎 5 知识学习计划系统 6 知识订阅系统 7 知识求索交换系统 8 用户权限管理系统 9 知识版本管理系统 10 知识资产评估系统 11 数据库备份、还原系统 12 文档存储管理系统 字串6 知识管理系统主要功能和模块KMPRO知识管理系统结合了知识管理“人、场所和事件“三元素,通过12大工具和模块为用户构建专有知识平台。 KMPRO知识地图分类工具 深蓝知识管理平台通过内建的知识发现器对知识创建上下文链接关 系,将信息放入视图中。
并使用评估工具确定知识价值和用户关系度。 形成知识地图。
通过知识地图便于企业快速搭建项目反应团队,便于用 户快速获得知识。 通过图形化、可视化的知识地图工具,创建企业信息和知识分类体系。
让知识信息分类,符合企业业务流程、符合员工对企业知识汲取的需求。“业务流程型”、“组织架构型”“知识类别型”等几种构建方式。
知识地图是企业知识资产的指南,能协助使用者快速且正确地找到所欲寻找的知识,再据此获得所需的知识。 知识地图指出知识的所在位置或来源,告知其所连结的信息包括了人员、程序、内容以及它们之间的关系。
KMPRO知识采集发布工具 所有用户均可以通过基于Web界面的知识采编系统,将他们收集到的知识录入到系统中。用户可以是没有任何网页知识的业务人员,只要他们有一点计算机使用基础,就可以使用系统。
当然,如果他们会使用Microsoft 的Office系列,那么他们可以使用知识采编系统中的高级功能,给录入的知识插入、FLASH动画、表格等元素。 无限层级栏目设置 KMPRO知识平台,提供无限层级的目录结构设计,可以 适 应 各 种 复 杂 的知识分类要求,对整个集团的知识信息进行统一的架构和分层级的维护。
同时提供快捷的移动、合并等功能,帮助知识管理员轻松的进行栏目的调整与优化。 所见即所得编辑器 KMPRO知识平台,提供了所见即所得的编辑器,通过图形化的界面,使用户可以轻松设计网页。
并支持从Word到所见即所得编辑器的直接粘贴。可帮助用户快速的排版发布图文并茂的知识文章。
知识版本管理工具 在本系统中引入了知识版本的概念,每次对该知识的修改或更新都将作为新版本的知识进行另存。 引入了文件组的文档组织结构,用版本升级方式标明每篇文档的编辑及修正过程,每篇知识文档的所有版本都保存于一个文件组中。
企业的知识文档会在不同员工、不同时段的修改升级,产生不同的版本,版本管理工具能够确保员工获得最新版本的文件或者任一版本的源文件。 用户和权限管理系统 系统内置超级用户“系统管理员”,具有对系统完全控制及维护权。
引入角色概念,角色数量可无限扩展,每个用户都与一个角色相对应。 权限设置与角色绑定,权限分为添加、修改、删除、查看、查看历史版本五项。
每篇知识文档也可设置相对应的用户权限。用户除其所对应角色拥有的权限外,还对已绑定其的文档具有操作权限,权限同样分为添加、修改、删除、查看、查看历史版本五项。
通过不同权限的管理,可以最大限度的达到对新知识的快速发布,对已发布知识的保护,高速查看各个知识点历史版本,对系统架构的拓展与保护等。 内置的安全和权限控管机制,允许管理员设定账号及层式群组功能,便于在各子系统应用。
具有优于 File System 的权限控制功能,对于文档 可以设定不同的读、写、编修权限,并分为群组及个人层级。 文档存储管理工具 使用独有的文档元数据元素(Knowledge Metadata),能够记录文档分类、摘要描述、文档来源和文档定义。
内建强大的文档树管理机制,清晰记录文档的使用状况。 支持多种资料来源 可将不同格式的资料(HTML/Word/TXT/PDF 等)存储于同一系统中, 建立一致的索引及关联。
可连接分布环境下的远程知识库,使分布环境 下的知识库互联。 大容量、大传输量存储 KMPRO知识管理平台通过技术手段处理,解决了知识管理中视频等文件数据量大,传输困难等问题,提高了数据的管理能力。
数据备份还原工具 KMPRO知识管理平台创建了自动和手动备份机制,通过数据备份确保知识管理的安全,避免知识灾难。 数据库备份文件名采用日期时间进行保存。
还原时选择备份文件即可。 个人知识管理环境 KMPRO知识平台,为企业员工提供个性化的知识信息门户,使得员工获得与其职位和权限相适应的知识,并在该门户中进行个人知识积累,为员工打造个人知识管理(PersonalKnowledgeManagement)的良好环境。
。
知识管理由哪三个系统组成?
知识管理系统(英语:Knowledge management system),是收集、处理、分享一个组织的全部知识的信息系统,通常有计算机系统支持。
利用软件系统或其他工具,对组织中大量的有价值的方案、策划、成果、经验等知识进行分类存储和管理,积累知识资产避免流失,促进知识的学习、共享、培训、再利用和创新,有效降低组织运营成本,强化其核心竞争力的管理方法。知识管理系统,并没有一个统一的定义。根据组织状况的不同,每个组织都需要发现适合自己的知识管理系统。当我们讨论知识管理系统时,我们集中在那些能够有效存储信息,同时能够实现高效的知识流转、共享、发现的系统。例如:
一种能够按照索引访问那些关键的商业资料(例如销售概况或者员工对企业流程的建议)的文档管理系统。
一个专业技能发现工具,使用它可以发现在整个组织或者企业中,那些人在特定的领域中具备了较高的专业的技能,并探讨如何分享这些技能,尤其针对知识密集型企业(如设计院、研究院)更是凸显了知识管理的重要性,无论是过程版本文件的管理还是成果文件的管控,苑信科知识管理系统不仅能从知识管理角度出发,还要在知识收集、再利用环节进行知识推送,最终才能实现知识管理的效益最大化。
主要。
企业知识管理系统应该有哪些应用?
KMPRO知识管理平台核心功能模块 深蓝KMPRO知识管理平台——是深蓝海域公司创新研发,基于互联网架构,快速分析企业知识结构、分类存储知识数据、共享知识应用、提升企业管理效率,增值企业知识资产,提升企业核心竞争力的软件系统。
深蓝KMPRO知识管理平台主要集成了: 1 知识地图分类系统 2 知识采集发布评论系统 3 知识浏览下载门户 4 知识搜索引擎 5 知识学习计划系统 6 知识订阅系统 7 知识求索交换系统 8 用户权限管理系统 9 知识版本管理系统 10 知识资产评估系统 11 数据库备份、还原系统 12 文档存储管理系统 知识管理系统主要功能和模块KMPRO知识管理系统结合了知识管理“人、场所和事件“三元素,通过12大工具和模块为用户构建专有知识平台。 KMPRO知识地图分类工具 深蓝知识管理平台通过内建的知识发现器对知识创建上下文链接关 系,将信息放入视图中。
并使用评估工具确定知识价值和用户关系度。 形成知识地图。
通过知识地图便于企业快速搭建项目反应团队,便于用 户快速获得知识。 通过图形化、可视化的知识地图工具,创建企业信息和知识分类体系。
让知识信息分类,符合企业业务流程、符合员工对企业知识汲取的需求。“业务流程型”、“组织架构型”“知识类别型”等几种构建方式。
知识地图是企业知识资产的指南,能协助使用者快速且正确地找到所欲寻找的知识,再据此获得所需的知识。 知识地图指出知识的所在位置或来源,告知其所连结的信息包括了人员、程序、内容以及它们之间的关系。
KMPRO知识采集发布工具 所有用户均可以通过基于Web界面的知识采编系统,将他们收集到的知识录入到系统中。用户可以是没有任何网页知识的业务人员,只要他们有一点计算机使用基础,就可以使用系统。
当然,如果他们会使用Microsoft 的Office系列,那么他们可以使用知识采编系统中的高级功能,给录入的知识插入、FLASH动画、表格等元素。 字串3 无限层级栏目设置 KMPRO知识平台,提供无限层级的目录结构设计,可以 适 应 各 种 复 杂 的知识分类要求,对整个集团的知识信息进行统一的架构和分层级的维护。
同时提供快捷的移动、合并等功能,帮助知识管理员轻松的进行栏目的调整与优化。 所见即所得编辑器 KMPRO知识平台,提供了所见即所得的编辑器,通过图形化的界面,使用户可以轻松设计网页。
并支持从Word到所见即所得编辑器的直接粘贴。可帮助用户快速的排版发布图文并茂的知识文章。
知识版本管理工具 在本系统中引入了知识版本的概念,每次对该知识的修改或更新都将作为新版本的知识进行另存。 引入了文件组的文档组织结构,用版本升级方式标明每篇文档的编辑及修正过程,每篇知识文档的所有版本都保存于一个文件组中。
企业的知识文档会在不同员工、不同时段的修改升级,产生不同的版本,版本管理工具能够确保员工获得最新版本的文件或者任一版本的源文件。 用户和权限管理系统 系统内置超级用户“系统管理员”,具有对系统完全控制及维护权。
引入角色概念,角色数量可无限扩展,每个用户都与一个角色相对应。 权限设置与角色绑定,权限分为添加、修改、删除、查看、查看历史版本五项。
每篇知识文档也可设置相对应的用户权限。用户除其所对应角色拥有的权限外,还对已绑定其的文档具有操作权限,权限同样分为添加、修改、删除、查看、查看历史版本五项。
通过不同权限的管理,可以最大限度的达到对新知识的快速发布,对已发布知识的保护,高速查看各个知识点历史版本,对系统架构的拓展与保护等。 内置的安全和权限控管机制,允许管理员设定账号及层式群组功能, 便于在各子系统应用。
具有优于 File System 的权限控制功能,对于文档 可以设定不同的读、写、编修权限,并分为群组及个人层级。 文档存储管理工具 使用独有的文档元数据元素(Knowledge Metadata),能够记录文档分 类、摘要描述、文档来源和文档定义。
修改主方法
public int saveContent(String enterpriseId, String enterpriseName, String lableType, String resouce, String pubDate,
String content) {
int state = 0;
LBHttpSolrServer server = SolrUtilgetSolrServer(apgetEnterprisenewSolrUrl());
SolrQuery query = new SolrQuery();
queryset("q", "enterpriseId:" + enterpriseId);
try {
QueryResponse qr = serverquery(query);
List<EnterpriseContentBean> contentList = qrgetBeans(EnterpriseContentBeanclass);
// 设置需要保存的文章信息
for (EnterpriseContentBean bean : contentList) {
beansetEnterpriseId(enterpriseId);
beansetEnterpriseName(enterpriseName);
List<String> contents = new ArrayList<String>();
contentsadd(content);
beansetContent(contents);
beansetPubDate(pubDate);
Systemoutprintln("pubDate======>" + pubDate);
List<String> lableTypes = ArraysasList(lableTypesplit(","));
beansetLableType(lableTypes);
beansetResource(resouce);
beansetIsVisited_s("1");
}
serveraddBeans(contentList);
servercommit();
} catch (SolrServerException e) {
state = 1;
Systemoutprintln("修改solr数据报错");
eprintStackTrace();
} catch (IOException e) {
state = 1;
Systemoutprintln("修改solr数据报错");
eprintStackTrace();
}
return state;
}
删除主方法
public int deletContent(String enterpriseId) {
LBHttpSolrServer server = SolrUtilgetSolrServer(apgetEnterprisenewSolrUrl());
int state = 0;
try {
serverdeleteById(enterpriseId);
servercommit();
} catch (SolrServerException e) {
state = 1;
Systemoutprintln("删除solr数据报错");
eprintStackTrace();
} catch (IOException e) {
state = 1;
Systemoutprintln("删除solr数据报错");
eprintStackTrace();
}
return state;
}
solr工具类
package comdinfobocutils;
import javaioIOException;
import javanetMalformedURLException;
import javautilArrayList;
import javautilArrays;
import javautilCollection;
import javautilList;
import orgapachesolrclientsolrjSolrQuery;
import orgapachesolrclientsolrjSolrServerException;
import orgapachesolrclientsolrjimplLBHttpSolrServer;
import orgapachesolrclientsolrjresponseQueryResponse;
import orgapachesolrcommonSolrDocumentList;
import orgapachesolrcommonSolrInputDocument;
import comdinfobocenterprisebeanEnterpriseContentBean;
import comdinfobocenterprisenewbeanSolrQueryResult;
/
与Solr服务器交互的工具类
@author qiuyj
/
public class SolrUtil {
/
获取与指定Solr地址的连接
@param solrUrl
@return
/
public static LBHttpSolrServer getSolrServer(String solrUrl){
final int ONE_HUNDRED_MS = 10000000;
if(solrUrl == null || ""equals(solrUrl)){
throw new RuntimeException("Solr url can not be empty!");
}
LBHttpSolrServer solrServer = null;
try {
solrServer = new LBHttpSolrServer(solrUrl);
solrServersetConnectionTimeout(ONE_HUNDRED_MS);
} catch (MalformedURLException e) {
eprintStackTrace();
} //SolrUtilgetSolrServer(solrUrl);
//solrServersetDefaultMaxConnectionsPerHost(100);
//solrServersetMaxTotalConnections(100);
return solrServer;
}
/
向指定的Solr地址添加一条数据
@param solrUrl
@param doc
@throws Exception
/
public static void add(String solrUrl, SolrInputDocument doc) throws Exception {
if(doc == null){
throw new RuntimeException("SolrInputDocument object can not be null!");
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
solradd(doc);
solrcommit();
}
/
向指定的Solr地址用JavaBean添加一条数据
@param solrUrl
@param obj
@throws Exception
/
public static void add(String solrUrl, Object obj) throws Exception {
if(obj == null){
throw new RuntimeException("Object to be inserted can not be null!");
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
solraddBean(obj);
solrcommit();
}
/
向指定Solr地址批量添加数据
@param solrUrl
@param docs
@throws Exception
/
@SuppressWarnings("unchecked")
public static void addAll(String solrUrl, Collection< extends Object> objs) throws Exception {
if(objs == null){
throw new RuntimeException("Object collection can not be null!");
}
if(objssize() == 0){
return;
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
if(objsiterator()next() instanceof SolrInputDocument){
solradd((Collection<SolrInputDocument>)objs);
} else {
solraddBeans(objs);
}
solrcommit();
}
/
根据给定的id,从solr中删除对应信息
@param solrUrl
@param ids
/
public static void deleteByIds(String solrUrl, String ids) throws Exception {
if(ids == null || idslength == 0){
throw new RuntimeException("Ids can not be empty!");
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
solrdeleteById(ArraysasList(ids));
solrcommit();
}
public static void deleteByIds(String solrUrl, Integer ids) throws Exception {
if(ids == null || idslength == 0){
throw new RuntimeException("Ids can not be empty!");
}
List<String> stringIdList = new ArrayList<>(idslength);
for(Integer id : ids){
stringIdListadd("" + id);
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
solrdeleteById(stringIdList);
solrcommit();
}
/
删除指定Solr路径下符合指定查询条件的数据
@param solrUrl
@param condition
@throws Exception
/
public static void deleteByCondition(String solrUrl, String condition) throws Exception {
if(condition == null || ""equals(condition)){
throw new RuntimeException("Condition can not be empty!");
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
solrdeleteByQuery(condition);
solrcommit();
}
/
删除指定Solr路径下的所有数据
@param solrUrl
@throws Exception
/
public static void deleteAll(String solrUrl) throws Exception {
deleteByCondition(solrUrl, ":");
}
/
根据 指定查询条件从Solr中查询数据,并以SolrDocument的List形式返回
@param solrUrl
@param query
@return
@throws Exception
/
public static SolrDocumentList queryAndGetSolrDocumentList(String solrUrl, SolrQuery query) throws Exception {
if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
QueryResponse resp = solrquery(query);
return respgetResults();
}
/
根据 指定查询条件从Solr中查询数据,并以QueryResponse形式返回
@param solrUrl
@param query
@return
@throws Exception
/
public static QueryResponse queryAndGetSolrQueryResponse(String solrUrl, SolrQuery query) throws Exception {
if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
QueryResponse resp = solrquery(query);
return resp;
}
/
根据 指定查询条件从Solr中查询数据,并以Java Bean的List形式返回
@param solrUrl
@param query
@param returnClass 返回的List集合的泛型
@return
@throws Exception
/
public static <T> List<T> queryAndGetBeanList(String solrUrl, SolrQuery query, Class<T> returnClass) throws Exception {
if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}
if(returnClass == null){
throw new RuntimeException("Return class can not be null!");
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
QueryResponse resp = solrquery(query);
return respgetBeans(returnClass);
}
/
根据 指定查询条件从Solr中查询数据,并以SolrQueryResult对象的形式返回,其中包含List对象和totalCount
@param solrUrl
@param query
@param returnClass 返回的List集合的泛型
@return
@throws Exception
/
public static <T> SolrQueryResult<T> queryAndGetSolrQueryResult(String solrUrl, SolrQuery query, Class<T> returnClass) throws Exception {
SolrQueryResult<T> result = new SolrQueryResult<T>();
if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}
if(returnClass == null){
throw new RuntimeException("Return class can not be null!");
}
LBHttpSolrServer solr = getSolrServer(solrUrl);
solrsetConnectionTimeout(10000);
QueryResponse resp = solrquery(query);
List<T> resultList = respgetBeans(returnClass);
long totalCount = respgetResults()getNumFound();
resultsetResultList(resultList);
resultsetTotalCount(totalCount);
return result;
}
/
根据 指定查询条件从Solr中查询数据,并以SolrQueryResult对象的形式返回,其中包含List对象和totalCount
@param solrUrl
@param query
@param returnClass 返回的List集合的泛型
@return
@throws Exception
/
public static <T> SolrQueryResult<T> queryAndGetSolrQueryResult(LBHttpSolrServer solr, SolrQuery query, Class<T> returnClass) throws Exception {
SolrQueryResult<T> result = new SolrQueryResult<T>();
if(query == null){
throw new RuntimeException("SolrQuery object can not be null!");
}
if(returnClass == null){
throw new RuntimeException("Return class can not be null!");
}
QueryResponse resp = solrquery(query);
List<T> resultList = respgetBeans(returnClass);
long totalCount = respgetResults()getNumFound();
resultsetResultList(resultList);
resultsetTotalCount(totalCount);
return result;
}
/
用以过滤一些影响Solr查询的特殊字符,如左右括号、星号等
@param str
@return
/
public static String filterSpecialCharacters(String str){
if(str == null){
return str;
}
str = strreplace("(", "\\(");
str = strreplace(")", "\\)");
str = strreplace("", "\\");
return str;
}
public static void updateSolrById(LBHttpSolrServer server){
SolrQuery query = new SolrQuery();
String id="5d495a00a5c8118c03ef0bec0111dd8d";
int state=0;
String name="新疆金风科技股份有限公司";
queryset("q", "enterpriseId:"+id);
try {
QueryResponse qr = serverquery(query);
List<EnterpriseContentBean> contentList = qrgetBeans(EnterpriseContentBeanclass);
//设置需要保存的文章信息
for(EnterpriseContentBean bean:contentList){
// beansetEnterpriseId(enterpriseId);
beansetEnterpriseName(name);
beansetResource("东方财富网港股频道");
}
serveraddBeans(contentList);
servercommit();
} catch (SolrServerException e) {
state = 1;
eprintStackTrace();
} catch (IOException e) {
state = 1;
eprintStackTrace();
}
}
public static void main(String[] args) {
try {
LBHttpSolrServerenterpriseServer=new LBHttpSolrServer("http://115182226165:8008/solr/enterprisenew");
enterpriseServersetConnectionTimeout(10000000);
updateSolrById(enterpriseServer);
Systemoutprintln("over");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
}
MongoDB[1] 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
服务器与PC的区别应该从硬件和软件两方面来看,根据应用的不同两者的差别很大,打个比方,PC就是那什么都会的门诊医生,但是医术不是那么精湛,而服务器就应该是某个方面的专家了,处理能力越出 \x0d\众,它“专”的就越厉害。我先从硬件上,根据各个组件说说他们的不同: \x0d\1CPU 服务器CPU的指令一般是采用的RISC(精简指令集)。根据研究,在大多数的应用中,CPU仅仅使用了很少的几种命令,于是研究人员就根据这种情况设计了该指令集,运用集中的各种命令组合来实现各种需求。这种设计的好处就是针对性更强,可以根据不同的需求进行专门的优化,处理效更高。相对应的则是CISC(复杂指令集),他的特点就是尽量把各种常用的功能集成到一块,例如我们常常听到的MMX,SSE,SSE+,3D!NOW!等等都是这种类型的。另外,服务器的CPU设计一般都要考虑它的多路功能,说白了就是好几个甚至上千上万个CPU一起工作的问题,而PC则简单多了,这种多路功能用上实在浪费,而它的价钱也的确是上面兄弟说的,不是谁都能受的了的。(补充:服务器的寻址能力很早前就是64位了;APPEL采用的指令集也是RISC,他是个另类,不过现在已经投靠INTEL了)2内存。内存在服务器上的原则也上越快越大越好,不过它对纠错和稳定提出了更高的要求,比如ECC("错误检查和纠正"好象没人这么叫的)。我们现在使用的PC上很少有人能够用到1G的内存(玩游戏的不算),而在服务器上,这G级的内存有时也会显着捉襟见肘,记得去年国家发布银河最新超级计算机时,他的内存更是达到了1个T;相比内存的速度,人们在应用的时候更优先考虑内存的稳定和纠错能力,只有在保证了这两条,才能再考虑别的东西。 \x0d\3硬盘。硬盘性能无论是在PC上还是服务器上,性能的提升一直很缓慢,个人认为,依靠机械的发展,硬盘的发展是不可能出现质的飞跃。由于使用服务器的一般都是企业单位,里面都是保存了大量珍贵数据,这对硬盘就提出了安全稳定的要求,硬盘上出现的相关技术也基本上围绕这两个要求转。比如:数据冗余备份,热插拔等。另外,服务器硬盘必须能做到247不间断工作的要求。 \x0d\4主板这个我了解的比较少,很少看到服务器有主板的说法,不过我觉得应该提提服务器的总线设计——多路,就是多个CPU如何能够协调工作。有兴趣建议你看看操作系统方面的书,看老外写的,很好! \x0d\5显卡除了图形和3D设计(那个人家好象都叫工作站,哪位达人知道请告诉我对不对),服务器上的显卡基本上就是你只要能接上显示器能显示就行! \x0d\接下来我说说软件,软件就主要指操作系统,比如我们熟悉的NT,2000 SERVER,2003 SERVER,LINUX,SOLRAIS和UNIX等等,都是专门针对服务器设计的,比如:负载均衡,多路CPU的支持。
0条评论