zoukankan      html  css  js  c++  java
  • searchServer IBM OminiFind / WebSphere Commerce SOLR

    百度搜索研发部

    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.iteye.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.iteye.com/topic/718602

    Solr+lucene+庖丁分词的一个问题

    http://www.iteye.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代码
    1. package com.s*****.recommend.portal.ui.util;  
    2.   
    3. import java.io.IOException;  
    4.   
    5. import org.apache.http.HttpResponse;  
    6. import org.apache.http.HttpStatus;  
    7. import org.apache.http.HttpVersion;  
    8. import org.apache.http.client.ClientProtocolException;  
    9. import org.apache.http.client.HttpClient;  
    10. import org.apache.http.client.methods.HttpGet;  
    11. import org.apache.http.conn.ClientConnectionManager;  
    12. import org.apache.http.conn.params.ConnManagerParams;  
    13. import org.apache.http.conn.params.ConnPerRouteBean;  
    14. import org.apache.http.conn.scheme.PlainSocketFactory;  
    15. import org.apache.http.conn.scheme.Scheme;  
    16. import org.apache.http.conn.scheme.SchemeRegistry;  
    17. import org.apache.http.conn.ssl.SSLSocketFactory;  
    18. import org.apache.http.impl.client.DefaultHttpClient;  
    19. import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;  
    20. import org.apache.http.params.BasicHttpParams;  
    21. import org.apache.http.params.HttpConnectionParams;  
    22. import org.apache.http.params.HttpParams;  
    23. import org.apache.http.params.HttpProtocolParams;  
    24. import org.apache.http.protocol.HTTP;  
    25. import org.apache.http.util.EntityUtils;  
    26. import org.apache.log4j.Logger;  
    27.   
    28. /** 
    29.  *  
    30.  *  
    31.  * 功能描述: http 请求连接 
    32.  * @version 1.0.0 
    33.  */  
    34. public class HelpHttpClient   
    35. {  
    36.     private static Logger logger = Logger.getLogger(HttpClientUtil.class);  
    37.   
    38.     private static final String CHARSET = HTTP.UTF_8;  
    39.     private static HttpClient client;  
    40.   
    41.     /**  
    42.      * 最大连接数  
    43.      */    
    44.     public final static int MAX_TOTAL_CONNECTIONS = 1500;  //默认20 现改为1500 ,Loadrunner用户并发TPS 由此上升  
    45.     /**  
    46.      * 获取连接的最大等待时间  
    47.      */    
    48.     public final static int WAIT_TIMEOUT = 60000;    
    49.     /**  
    50.      * 每个路由最大连接数  
    51.      */    
    52.     public final static int MAX_ROUTE_CONNECTIONS = 1000;    
    53.     /**  
    54.      * 连接超时时间  
    55.      */    
    56.     public final static int CONNECT_TIMEOUT = 3000;    
    57.     /**  
    58.      * 读取超时时间  
    59.      */    
    60.     public final static int READ_TIMEOUT = 10000;    
    61.   
    62.   
    63.   
    64.     /** 
    65.      * 私有构造方法 
    66.      */  
    67.     private HelpHttpClient()   
    68.     {  
    69.     }  
    70.   
    71.     /** 
    72.      *  
    73.      * 功能描述:发送http 请求获取字符串 
    74.      * 输入参数:<按照参数定义顺序>  
    75.      * @param 参数说明   
    76.      * url 请求url 
    77.      * charset 转化字符串编码 
    78.      * 返回值:  String 
    79.      * @return  json 字符串 
    80.      * @see 需要参见的其它内容 
    81.      */  
    82.     public static String getJson(String url, String charset)  
    83.     {  
    84.         // 获取 url 连接  
    85.         HttpClient client = getHttpClient();  
    86.         HttpGet getMethod = new HttpGet(url);  
    87.         String jsonStr = "";  
    88.         try   
    89.         {  
    90.             // 执行请求  
    91.             HttpResponse response = client.execute(getMethod);  
    92.             // 响应结果,如果是200,则响应成功  
    93.             if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode())  
    94.             {  
    95.                 // 将响应流转化为字符串  
    96.                 jsonStr = EntityUtils.toString(response.getEntity(), charset);  
    97.             }  
    98.   
    99.         } catch (ClientProtocolException e)   
    100.         {  
    101.             logger.debug("httpclient create failure.", e);  
    102.         } catch (IOException e)   
    103.         {  
    104.             logger.debug("httpclient create failure.", e);  
    105.         }  
    106.   
    107.         return jsonStr;  
    108.     }  
    109.   
    110.   
    111.     /** 
    112.      *  
    113.      * 功能描述:多线程 http 请求 
    114.      * 返回值:  类型 <说明>  
    115.      * @return 返回值 HttpClient 
    116.      * @see 需要参见的其它内容 
    117.      */  
    118.     @SuppressWarnings("deprecation")  
    119.     public static synchronized HttpClient getHttpClient()  
    120.     {  
    121.         if (null == client)  
    122.         {  
    123.             HttpParams httpParams = new BasicHttpParams();  
    124.   
    125.             // 设置基本参数  
    126.             HttpProtocolParams.setVersion(httpParams, HttpVersion.HTTP_1_1);  
    127.             HttpProtocolParams.setContentCharset(httpParams, CHARSET);  
    128.             HttpProtocolParams.setUseExpectContinue(httpParams, true);  
    129.   
    130.             // 设置最大连接数    
    131.             ConnManagerParams.setMaxTotalConnections(httpParams, MAX_TOTAL_CONNECTIONS);    
    132.             // 设置获取连接的最大等待时间    
    133.             ConnManagerParams.setTimeout(httpParams, WAIT_TIMEOUT);    
    134.             // 设置每个路由最大连接数    
    135.             ConnPerRouteBean connPerRoute = new ConnPerRouteBean(MAX_ROUTE_CONNECTIONS);    
    136.             ConnManagerParams.setMaxConnectionsPerRoute(httpParams,connPerRoute);    
    137.             // 设置连接超时时间    
    138.             HttpConnectionParams.setConnectionTimeout(httpParams, CONNECT_TIMEOUT);    
    139.             // 设置读取超时时间    
    140.             HttpConnectionParams.setSoTimeout(httpParams, READ_TIMEOUT);    
    141.   
    142.             SchemeRegistry regist = new SchemeRegistry();  
    143.             // 设置 http 请求支持http 和 https 两种模式  
    144.             regist.register(new Scheme("http"80,PlainSocketFactory.getSocketFactory()));  
    145.             regist.register(new Scheme("https"443, SSLSocketFactory.getSocketFactory()));  
    146.   
    147.             // 使用线程安全的链接管理创建 HttpClient  
    148.             ClientConnectionManager connManager = new ThreadSafeClientConnManager(httpParams, regist);  
    149.   
    150.             client = new DefaultHttpClient(connManager);  
    151.   
    152.         }  
    153.   
    154.         return client;  
    155.     }  
    156. }  

     end

  • 相关阅读:
    Win7。56个进程让我头疼
    bzoj2843极地旅行社
    bzoj2751[HAOI2012]容易题(easy)
    bzoj3442学习小组
    bzoj4423[AMPPZ2013]Bytehattan
    bzoj4591[Shoi2015]超能粒子炮·改
    bzoj2299[HAOI2011]向量
    bzoj3223Tyvj 1729 文艺平衡树
    bzoj2563阿狸和桃子的游戏
    bzoj3673可持久化并查集 by zky&&bzoj3674可持久化并查集加强版
  • 原文地址:https://www.cnblogs.com/lindows/p/14390349.html
Copyright © 2011-2022 走看看