CM开发日志 - 搜索引擎(一)

IBM WebSphere Commerce使用了Apache Solr Search做为搜索引擎解决方案,提供了全方位的封装,主要体现在如下方面:

  • Solr多核的创建
  • DIH (Data Import Handle) 处理的preprocess & indexbuild
  • 由Search REST Service提供的很方便的针对索引文件的查询

这三个方面也是贯穿solr搜索的整个生命周期的。

介绍:开发环境

目前我使用的WCS版本是WebSphere Commerce Version 7 - Feture Pack 7,集成了Solr 4.3.0,FEP7对Search的改动我觉得主要有以下两点:

  • 以前是将Search做为一个WAR包嵌入到WC EAR包当中。现在是将两者分离开来,成为两个独立的应用。
  • 提供Search REST Service。更好的通过API去查询索引文件。

另外,应用服务器是与WCS FEP7相对应的WAS 7.0.0.31,本地集成开发环境(IDE)是RAD。

Apache Solr介绍

Solr是构建于Lucene之上的企业级全文搜索引擎,提供了可靠的,可扩展,高度定制化的解决方案。

Solr解决了从企业数据库到本地索引文件的创建和持久化过程,减少了数据库服务器的负载,并且提供了负载均衡的解决方案: solr主从服务器,分发服务器,还有solr index的复制。

Solr和Lucene?

Lucene主要专注于底层的设计,而solr负责应用层的设计;另外Lucene本质上是搜索库,而不是独立的应用程序。综合以上两点,一句话概况: Solr是构建于Lucene之上,面对企业级应用的搜索应用。

Lucene提供了底层的设计,比如:分析器(Analyzer)。

分析器的大致作用是对一个document进行索引时,其中的每个field中的数据都会经历分析(分析就是组合分词和过滤),最终将一句话分成单个的单词,去掉句子当中的空白符号,大写转换小写,复数转单数,去掉多余的词,进行同义词代换等等。

如:This is a blog! this, is, a 会被去除,最后最剩下blog。当然!这个符号也会被去除的。

这个过程是在索引和查询过程中都会进行的,而且通常两者进行的处理的都是一样的,这样做是为了保证建立的索引和查询的正确匹配。

时间: 2024-10-14 00:13:37

CM开发日志 - 搜索引擎(一)的相关文章

CM开发日志 - 搜索引擎(二)

Solr多核(MultiCore)的概念 想象一下,如果在你的应用里,如果你的索引要区分Catalog,多语言和索引类型,这样的话,一个Search应用对应一个Solr实例是远远不够的,这样就引入了Solr多核(MultiCore)的概念.Solr多核就是在一个search 应用里面创建多个实例,然后给实例分别创建文件系统. Solr多核的创建 WebSphere Commerce本地开发环境里面定义了一个基础的搜索组件(V:\IBM\WCDE_INT70\components\foundati

CM开发日志 - 搜索引擎(三)

到了这篇博文,对于solr的整个生命周期,希望各位要有个初步的认识(以便能抓住整个系列文章的脉络). 我用自己的话总结为以下: solr 多核创建 -> 索引的预处理 -> 索引的创建和持久化 -> 索引的调用(Search API与索引文件的交互) 不对的地方希望大家指正.另外,最近在查一些关于Solr里面比较深入具体的资料的时候,发现网上的很多资料要么是简单的相互拷贝,要么就是英文资料.总是感觉不那么得心应手之余,有些东西自己还是得去看solr wiki或者查看源代码.也希望自己的一

CM开发日志(四) - Solr 反向索引

什么是反向索引?(很多文章也称为倒排索引) 索引技术主要有以下3种: 反向索引,后缀数组和签名文件.其中, 反向索引技术在当前大多数的信息检索系统中得到了广泛的应用, 它对于关键词的搜索非常有效, 在lucene中也是使用的这种技术.后缀数组技术在短语查询中具有很快的速度, 但是这样的数据结构在构造和维护时都比较复杂一些.签名文件技术在20世纪80年代比较流行, 但是后来反向索引技术逐渐超越了它. 反向索引是目前搜索引擎公司对搜索引擎最常用的存储方式, 也是搜索引擎的核心内容, 反向索引源于实际

Lucene4.6+Solr4.6实战开发垂直搜索引擎 Lucene4.6实战视频教程

<基于Lucene4.6+Solr4.6+Heritrix1.14+S2SH实战开发从无到有垂直搜索引擎> 课程讲师:小叶子 课程分类:Java 适合人群:初级 课时数量:69课时 用到技术:Hibernate.Struts.Spring.jQuery.Lucene.Solr.Heritrix 涉及项目:百度文库搜索引擎 垂直搜索引擎是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,是对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户.垂直

[课程设计]任务进度条&amp;开发日志目录

[课程设计]任务进度条&开发日志目录 任务进度条&开发日志目录         周    期          时     间       任       务   Sprint One    11.14     ●  Scrum团队分工及明确任务1.0    Sprint One     11.15      ● Sprint One    11.16     ● Sprint One    11.17     ●

独立开发日志转移说明

为了加强与其他独立游戏开发者的沟通和交流,以后独立开发日志将发在专注独立游戏的indienova,其他通用性的技术文章将继续发在博客园,让不同内容的文章各归其位. 独立开发日志新地址:http://indienova.com/u/guigui/blog

《Invert》开发日志05:终止

今天终于看了久闻大名的<独立游戏大电影>,然后我就做了一个坑爹的决定:终止“Invert”项目的开发.没错,在还没正式开工之前,我就决定停掉这个项目,而且是永久终止.做这个决定并不是因为觉得凭一己之力开发一个游戏不可能,而是因为我突然发现自己正在做的并不是自己想要的游戏.几乎照抄别人的创意,在动工之前就想好如何盈利,只想着如何吸引玩家如何增加留存,这不全是商业游戏的思维和模式吗?这样的游戏又有什么独立开发的意义? 不管是“大电影”还是IndieACE上的讨论都明白无误地告诉我们,真正好的独立游

常规功能和模块自定义系统 (cfcmms)—029开发日志(创建ManyToMany的column4)

029开发日志(创建ManyToMany的column4) 根据以上几节的准备,在这一节中可以加入ManyToManyColumn.js了.先来看看做好的样子如下图: 单击文字链接可以显示该条记录的情况.按下删除按钮则会显示一个提示窗口,询问是否删除此项. 下面即为ManyToManyColumn.js的代码. /** * * ManyToMany记录的管理,将根据权限设置来显示修改或删除按钮 * * 蒋锋 2015.12.31 * */ Ext .define( 'app.module.wid

开发日志-14-07-30

Anaconda == Build == 获取源码:git clone git://git.fedorahosted.org/git/anaconda.git 安装依赖包: sudo yum install libtool $(grep ^BuildRequires: anaconda.spec.in | awk '{print $2}') 安装.配置transifex:sudo yum install transifex-client:tx init /tmp ./autogen.sh &&am