设为首页 收藏本站
查看: 915|回复: 0

[经验分享] searchServer IBM OminiFind / WebSphere Commerce SOLR

[复制链接]

尚未签到

发表于 2016-12-15 11:02:50 | 显示全部楼层 |阅读模式
  百度搜索研发部
  http://stblog.baidu-tech.com/
  IBM Ominifind Discovery Edition / IBM OminiFind Enterprise Edition / IBM WebSphere Commerce 7 SOLR
  http://publib.boulder.ibm.com/infocenter/ode/v8r4m1/index.jsp
  data limit 6000000~10000000  >>> ODE Server
  Apache SOLR
  http://wiki.apache.org/solr
  http://lucene.apache.org/solr/
  http://lucene.apache.org/solr/tutorial.html
  
  使用 Apache Lucene 和 Solr 进行位置感知搜索
  http://www.ibm.com/developerworks/cn/java/j-spatial/index.html
  Solr+Tomcat在Windows下的搭建
  http://www.iyunv.com/topic/334507
  最近在学习收索引擎,找了一些资料,学着在Windows下搭建Solr+Tomcat,可是网上的资料要么太老,要么就是英文版的,看着很费劲。
   先来说说Solr,Solr 最初由 CNET Networks 开发,2006 年初,Apache Software Foundation 在 Lucene 顶级项目的支持下得到了 Solr。Solr 于 2007 年 1 月酝酿成熟,在整个项目孵化期间,Solr 稳步地积累各种特性并吸引了一个稳定的用户群体、贡献者和提交人。Solr 现在是 Lucene(Apache 的基于 Java 的全文本搜索引擎库)的一个子项目。
   下面是我的搭建过程,在我机子上能跑能跳的~~呵呵
开始,先要安装JDK1.5后以上的版本,然后当然得安装Tomcat,我用的Tomcat版本是apache-tomcat-6.0.18的,再去Sole的官网上把Solr下下来,Solr官网:http://lucene.apache.org/solr/,我下的是apache-solr-1.3.0.zip,把它解压为apache-solr-1.3.0。把apache-solr-1.3.0文件夹下的dist\apache-solr-1.3.0.war放到Tomcat下的webapps目录下并把它改名为solr.war(名字短点方便)。把Eapache-solr-1.3.0文件夹下的solr\example目录中的solr文件夹复制到Ttomcat目录下。在Ttomcat目录work\Catalina\localhost目录下创建一个solr.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="" debug="0" crossContext="true" >
   <Environment name="solr/home" type="java.lang.String" value="D:\apache-tomcat-6.0.18\solr" override="true" />
</Context>
最后启动Tomcat。可以打开http://localhost:8080/solr/admin;就会出现成功界面了。
  
  solr-1.4.1安装笔记
  http://www.iyunv.com/topic/718602
  Solr+lucene+庖丁分词的一个问题
  http://www.iyunv.com/topic/231150
  我在用Solr+lucene做英文检索时一切正常,但加入庖丁后发现会出现问题
严重: org.apache.lucene.store.LockObtainFailedException: Lock obtain timed out: SimpleFSLock@D:\solr-tomcat\data\index\write.lock
对于这个异常主要时因为lucene在写入索引时, 用在索引目录下建write.lock文件来标识锁定.而只有在执行close()方法后,才会删除这个锁文件.只要这个文件存在,其他的写索引的程序都会报错. 到这里我就很费解,只是加入了庖丁分词之后才出现这个问题,
  Compass
  http://compass-project.org/
  http://www.oschina.net/p/compass
  Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架.Compass包括:  
  * 搜索引擎抽象层(使用Lucene搜索引荐),
 * OSEM (Object/Search Engine Mapping) 支持,
 * 事务管理,
 * 类似于Google的简单关键字查询语言, 
 * 可扩展与模块化的框架,
 * 简单的API.
  类似项目有 Hibernate Search
  HelpHttpClient.java
  这里 public final static int MAX_TOTAL_CONNECTIONS = 1500; //默认20 现改为1500
  Loadrunner模拟用户并发事务数 TPS 由此上升
Java代码


  • package com.s*****.recommend.portal.ui.util;  
  •   
  • import java.io.IOException;  
  •   
  • import org.apache.http.HttpResponse;  
  • import org.apache.http.HttpStatus;  
  • import org.apache.http.HttpVersion;  
  • import org.apache.http.client.ClientProtocolException;  
  • import org.apache.http.client.HttpClient;  
  • import org.apache.http.client.methods.HttpGet;  
  • import org.apache.http.conn.ClientConnectionManager;  
  • import org.apache.http.conn.params.ConnManagerParams;  
  • import org.apache.http.conn.params.ConnPerRouteBean;  
  • import org.apache.http.conn.scheme.PlainSocketFactory;  
  • import org.apache.http.conn.scheme.Scheme;  
  • import org.apache.http.conn.scheme.SchemeRegistry;  
  • import org.apache.http.conn.ssl.SSLSocketFactory;  
  • import org.apache.http.impl.client.DefaultHttpClient;  
  • import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;  
  • import org.apache.http.params.BasicHttpParams;  
  • import org.apache.http.params.HttpConnectionParams;  
  • import org.apache.http.params.HttpParams;  
  • import org.apache.http.params.HttpProtocolParams;  
  • import org.apache.http.protocol.HTTP;  
  • import org.apache.http.util.EntityUtils;  
  • import org.apache.log4j.Logger;  
  •   
  • /** 
  •  *  
  •  *  
  •  * 功能描述: http 请求连接 
  •  * @version 1.0.0 
  •  */  
  • public class HelpHttpClient   
  • {  
  •     private static Logger logger = Logger.getLogger(HttpClientUtil.class);  
  •   
  •     private static final String CHARSET = HTTP.UTF_8;  
  •     private static HttpClient client;  
  •   
  •     /**  
  •      * 最大连接数  
  •      */    
  •     public final static int MAX_TOTAL_CONNECTIONS = 1500;  //默认20 现改为1500 ,Loadrunner用户并发TPS 由此上升  
  •     /**  
  •      * 获取连接的最大等待时间  
  •      */    
  •     public final static int WAIT_TIMEOUT = 60000;    
  •     /**  
  •      * 每个路由最大连接数  
  •      */    
  •     public final static int MAX_ROUTE_CONNECTIONS = 1000;    
  •     /**  
  •      * 连接超时时间  
  •      */    
  •     public final static int CONNECT_TIMEOUT = 3000;    
  •     /**  
  •      * 读取超时时间  
  •      */    
  •     public final static int READ_TIMEOUT = 10000;    
  •   
  •   
  •   
  •     /** 
  •      * 私有构造方法 
  •      */  
  •     private HelpHttpClient()   
  •     {  
  •     }  
  •   
  •     /** 
  •      *  
  •      * 功能描述:发送http 请求获取字符串 
  •      * 输入参数:<按照参数定义顺序>  
  •      * @param 参数说明   
  •      * url 请求url 
  •      * charset 转化字符串编码 
  •      * 返回值:  String 
  •      * @return  json 字符串 
  •      * @see 需要参见的其它内容 
  •      */  
  •     public static String getJson(String url, String charset)  
  •     {  
  •         // 获取 url 连接  
  •         HttpClient client = getHttpClient();  
  •         HttpGet getMethod = new HttpGet(url);  
  •         String jsonStr = "";  
  •         try   
  •         {  
  •             // 执行请求  
  •             HttpResponse response = client.execute(getMethod);  
  •             // 响应结果,如果是200,则响应成功  
  •             if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode())  
  •             {  
  •                 // 将响应流转化为字符串  
  •                 jsonStr = EntityUtils.toString(response.getEntity(), charset);  
  •             }  
  •   
  •         } catch (ClientProtocolException e)   
  •         {  
  •             logger.debug("httpclient create failure.", e);  
  •         } catch (IOException e)   
  •         {  
  •             logger.debug("httpclient create failure.", e);  
  •         }  
  •   
  •         return jsonStr;  
  •     }  
  •   
  •   
  •     /** 
  •      *  
  •      * 功能描述:多线程 http 请求 
  •      * 返回值:  类型 <说明>  
  •      * @return 返回值 HttpClient 
  •      * @see 需要参见的其它内容 
  •      */  
  •     @SuppressWarnings("deprecation")  
  •     public static synchronized HttpClient getHttpClient()  
  •     {  
  •         if (null == client)  
  •         {  
  •             HttpParams httpParams = new BasicHttpParams();  
  •   
  •             // 设置基本参数  
  •             HttpProtocolParams.setVersion(httpParams, HttpVersion.HTTP_1_1);  
  •             HttpProtocolParams.setContentCharset(httpParams, CHARSET);  
  •             HttpProtocolParams.setUseExpectContinue(httpParams, true);  
  •   
  •             // 设置最大连接数    
  •             ConnManagerParams.setMaxTotalConnections(httpParams, MAX_TOTAL_CONNECTIONS);    
  •             // 设置获取连接的最大等待时间    
  •             ConnManagerParams.setTimeout(httpParams, WAIT_TIMEOUT);    
  •             // 设置每个路由最大连接数    
  •             ConnPerRouteBean connPerRoute = new ConnPerRouteBean(MAX_ROUTE_CONNECTIONS);    
  •             ConnManagerParams.setMaxConnectionsPerRoute(httpParams,connPerRoute);    
  •             // 设置连接超时时间    
  •             HttpConnectionParams.setConnectionTimeout(httpParams, CONNECT_TIMEOUT);    
  •             // 设置读取超时时间    
  •             HttpConnectionParams.setSoTimeout(httpParams, READ_TIMEOUT);    
  •   
  •             SchemeRegistry regist = new SchemeRegistry();  
  •             // 设置 http 请求支持http 和 https 两种模式  
  •             regist.register(new Scheme("http", 80,PlainSocketFactory.getSocketFactory()));  
  •             regist.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));  
  •   
  •             // 使用线程安全的链接管理创建 HttpClient  
  •             ClientConnectionManager connManager = new ThreadSafeClientConnManager(httpParams, regist);  
  •   
  •             client = new DefaultHttpClient(connManager);  
  •   
  •         }  
  •   
  •         return client;  
  •     }  
  • }  

  end

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314704-1-1.html 上篇帖子: Lucene & Solr Year 2011 in Review 下篇帖子: solr的unique-key的fieldtype必须为string类型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表