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: [email protected]:\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

;