精华内容
下载资源
问答
  • Solr的在5.0版本后,不再提供战争包部署的方式,取而代之的是内置了码头服务, 但是我们发现其中并没有内置任何安全性相关检查,任何人如果知道了我们的外网地址就能直接...Solr的/服务器/ Solr的-web应用/ WEB-...

    原文:https://brandnewuser.iteye.com/blog/2318027

    Solr的在5.0版本后,不再提供战争包部署的方式,取而代之的是内置了码头服务,

     

    但是我们发现其中并没有内置任何安全性相关检查,任何人如果知道了我们的外网地址就能直接访问并修改其中的索引。经过查找可以使用码头的方式来限制网络访问。

     

    Solr的/服务器/ Solr的-web应用/ WEB-INF / web.xml文件中增加以下字段:

     

     

    XML代码  收藏代码

    1. security-constraint >  
    2.     web-resource-collection >  
    3.       web-resource-name solr </ web-resource-name >  
    4.       url-pattern </ url-pattern >  
    5.     </ web-resource-collection >  
    6.     auth-constraint >  
    7.       role-name solr_admin </ role-name >  
    8.       role-name admin </ role-name >  
    9.     </ auth-constraint >  
    10.    
    11.     login-config >  
    12.       auth-method BASIC </ auth-method >  
    13.       realm-name Solr Admin </ realm-name >  
    14.     </ login-config >  
    15.   </ security-constraint >  

     

     

    配置验证方式BASIC(用户名密码的方式)。

     

    Solr的/服务器的/ etc /的jetty.xml中增加呼叫标签:

     

    XML代码  收藏代码

    1. Call name “addBean” >   
    2.       Arg >  
    3.         New class “org.eclipse.jetty.security.HashLoginService” >   
    4.           Set name “name” Solr Admin </ Set >   
    5.           Set name “config” >   
    6.             /Users/mazhiqiang/develop/tools/solr-5.5.0/server/etc/realm.properties  
    7.           </ Set >  
    8.           Set name “refreshInterval” </ Set >   
    9.         </ >  
    10.       </ Arg >  
    11.     </ Call >  

     

     

    配置中指定密码文件的路径,可以在其中使用<SystemProperty>来共同组合路径,例如配置了环境变量的情况下,可以使用下面的方式:

     

     

    XML代码  收藏代码

    1. Set name “config” SystemProperty name “jetty.home” default “。” /> /etc/realm.properties </ Set >     

      

    而指定的realm.properties就是相关密码文件了:

     

    XML代码  收藏代码

    1. 管理员:XXXX,solr_admin  

     

     

    设置完成,重新启动Solr的即可,如果不输入用户名和密码,无法登陆成功:

     

     

     

     

     

    注意该方法同样会影响HttpSolr连接以及SolrCloud连接,报出下面的错误:

     

     

    的Java代码  收藏代码

    1. “code” 500 “codeMsg” “来自服务器的错误:http:// xxx:8983 / solr / brand:预期的mime类型应用程序/八位字节流但是得到了text / html。<html> \ n <head> \ n <meta http-equiv = \“Content-Type \”content = \“text / html; charset = UTF-8 \“/> \ n <title>错误401未授权</ title> \ n </ head> \ n <body> <h2> HTTP错误401 </ h2> \ n <p>访问/的问题solr / brand / select。原因:\ n <pre>未经授权</ pre> </ p> <hr> <i> <small>由Jetty提供支持:// </ small> </ i> <hr /> \ n \ n </ body> \ n </ html> \ n“ }  

     

     

    我们可以使用简单验证的方式来测试一下:

     

     

    的Java代码  收藏代码

    1. URL url =  new  URL(“http:// xxxx:8983 / solr /” );  
    2. 字符串编码= Base64.encode(“admin:xxxx” .getBytes());  
    3.    
    4. HttpURLConnection connection =(HttpURLConnection)url.openConnection();  
    5. connection.setRequestMethod(“GET” );  
    6. connection.setDoOutput(true );  
    7. connection.setRequestProperty(“授权” ,  “基本”  +编码);  
    8. InputStream content =(InputStream)connection.getInputStream();  
    9. BufferedReader in =  
    10.         new  BufferedReader(new  InputStreamReader(content));  
    11. 字符串行;  
    12. while  ((line = in.readLine())!=  null ){  
    13.     的System.out.println(线);  
    14. }  

      

    如果加上凭证,是可以成功地将结果HTML打印出来,否则提示401(未授权)错误。

     

    此时使用SolrCloud的情况下,就不能用CloudSolrClient中内置的HttpClient的,而只能在外部声明并传入,顺带建立CredentialsProvider,用于基本权限验证:

     

     

    的Java代码  收藏代码

    1. String zkHost = PropertiesUtil.getProperty(“zkhost” ,PROPERTY_FILE_NAME);  
    2. String collection = PropertiesUtil.getProperty(collectionName.getConfigName(),PROPERTY_FILE_NAME);  
    3. int  zkClientTimeout = StringUtils  
    4.       .parseInt(PropertiesUtil.getProperty(“zkClientTimeout” ,PROPERTY_FILE_NAME));  
    5. int  zkConnectTimeout = StringUtils  
    6.       .parseInt(PropertiesUtil.getProperty(“zkConnectTimeout” ,PROPERTY_FILE_NAME));  
    7.    
    8.         PoolingHttpClientConnectionManager connManager =  new  PoolingHttpClientConnectionManager();  
    9.         //连接池最大连接数  
    10.         connManager.setMaxTotal(50 );  
    11.         //每个路由最大连接数  
    12.         connManager.setDefaultMaxPerRoute(20 );  
    13.    
    14.         // http请求配置信息  
    15.         RequestConfig requestConfig = RequestConfig.custom()。setConnectTimeout(2000 ).setSocketTimeout(2000 )  
    16.                 .setConnectionRequestTimeout(500 ).setCookieSpec(CookieSpecs.STANDARD)  
    17.                 。建立();  
    18.    
    19.         CredentialsProvider credentialsProvider =  new  BasicCredentialsProvider();  
    20.         credentialsProvider.setCredentials(new  AuthScope(PropertiesUtil.getProperty(“solrHost” ,PROPERTY_FILE_NAME),  
    21.                 Integer.parseInt(PropertiesUtil.getProperty(“solrPort” ,PROPERTY_FILE_NAME))),  
    22.                 new  UsernamePasswordCredentials(PropertiesUtil.getProperty(“solrUserName” ,PROPERTY_FILE_NAME),  
    23.                         PropertiesUtil.getProperty(“solrPassword” ,PROPERTY_FILE_NAME)));  
    24.    
    25.         CloseableHttpClient httpClient = HttpClients.custom()。setConnectionManager(connManager).setDefaultRequestConfig(requestConfig)  
    26.                 .setConnectionManagerShared(true ).setDefaultCredentialsProvider(credentialsProvider).build();  
    27.    
    28.         CloudSolrClient cloudSolrClient =  new  CloudSolrClient(zkHost,httpClient);  

     

     

    此时就可以像以前一样正常查询了,注意在已经添加凭据情况下,如果此时服务器不需要验证,也不会出错。 

     

    对定时全/增量导入的影响

     

    如果增加了安全校验,同样也会影响full-import,delta-import的执行,此时从solr.log日志中就可以拿到错误的信息:

     

    的Java代码  收藏代码

    1. 2016 08 29 09 10 41.925  INFO(Timer- )[] oashdsBaseTimerTask [product] <索引更新过程>过程开始于...............  29.08 2016 09 10 41 925     
    2. 2016 08 29 09 10 41.948  INFO(Timer- )[] oashdsBaseTimerTask [product] <索引更新过程>完整URL http:// localhost:8983 / solr / product / dataimport?command = delta-import&clean = false&commit =真   
    3. 2016 08 29 09 10 41.958  INFO(Timer- )[] oashdsBaseTimerTask [product] <索引更新过程>响应消息未经授权   
    4. 2016 08 29 09 10 41.958  INFO(Timer- )[] oashdsBaseTimerTask [product] <索引更新过程>响应代码              401   
    5. 2016 08 29 09 10 41.986  INFO(Timer- )[] oashdsBaseTimerTask [product] <索引更新过程>与服务器localhost断开连接   
    6. 2016 08 29 09 10 41.986  INFO(Timer- )[] oashdsBaseTimerTask [product] <索引更新流程>流程于................ 29.08 结束  2016 09 10 41 986     

     

     

    在全面导入/增量导入的相关代码中,没有涉及到权限验证部分,直接使用HTTP连接:

     

    的Java代码  收藏代码

    1. protected void  sendHttpPost(String completeUrl,String coreName){   
    2.   DateFormat df =  new  SimpleDateFormat(“dd.MM.yyyy HH:mm:ss SSS” );  
    3.   Date startTime =  new  Date();  
    4.    
    5.   //准备核心变量  
    6.   String core = coreName ==  null  ? “”  :  “[”  + coreName +  “]” ;  
    7.    
    8.   logger.info(核心  
    9.         +  “<索引更新过程>过程从..............开始。”  
    10.         + df.format(startTime));  
    11.    
    12.   尝试 {  
    13.    
    14.       URL url =   网址(completeUrl);  
    15.       HttpURLConnection conn =(HttpURLConnection)url.openConnection();  
    16.    
    17.       conn.setRequestMethod(“POST” );  
    18.       conn.setRequestProperty(“type” ,  “submit” );  
    19.       conn.setDoOutput(true );  
    20.    
    21.       //发送HTTP POST  
    22.       conn.connect();  
    23.    
    24.       logger.info(核心+  “<索引更新过程>完整URL \ t \ t \ t \ t \ t”  
    25.             + conn.getURL());  
    26.       logger.info(核心+  “<索引更新过程>响应消息\ t \ t \ t \ t”  
    27.             + conn.getResponseMessage());  
    28.       logger.info(核心+  “<索引更新过程>响应代码\ t \ t \ t”  
    29.             + conn.getResponseCode());  
    30.    
    31.       //如果发生错误,请侦听属性文件中的更改  
    32.       if  (conn.getResponseCode()!=  200 ){  
    33.         reloadParams();  
    34.       }  
    35.    
    36.       conn.disconnect();  
    37.       logger.info(核心  
    38.             +  “<索引更新过程>与服务器\ t \ t \ t断开连接”  
    39.             +服务器);  
    40.       Date endTime =  new  Date();  
    41.       logger.info(核心  
    42.             +  “<索引更新过程>过程结束于................”  
    43.             + df.format(endTime));  
    44.   }  catch  (MalformedURLException mue){  
    45.       logger.error(“无法汇编HTTP POST的URL” ,mue);  
    46.   }  catch  (IOException ioe){  
    47.       logger.error(  
    48.             “尝试发送HTTP POST时无法连接到指定的URL” ,  
    49.             IOE);  
    50.   }  catch  (例外e){  
    51.       logger.error(“无法发送HTTP POST” ,e);  
    52.   }  
    53. }  

     

     

    这种方式同样需要增加权限验证,在conn执行连接之前,要设置认证选项:

     

    的Java代码  收藏代码

    1. String encoding = Base64.encode(“username:password”.getBytes());  
    2. conn.setRequestProperty(“授权” ,  “基本”  +编码);  

     

     

    注意当前使用的仅仅是硬编码设置的用户名,密码,修改完成后,要将原有的罐子包(Apache的solr的-dataimportscheduler-1.0.jar)进行重新编译并替换,重启solr的服务即可。

     

     

    使用内置的HttpSolrClient

     

    即并不传入原来的,还有另外一种方法,可用于配置基本用户以及密码认证,在HttpClientConfigurer类中对DefaultHttpClient的参数进行配置时,使用了下面的属性配置:

     

    的Java代码  收藏代码

    1. final  String basicAuthUser = config  
    2.     获得(HttpClientUtil.PROP_BASIC_AUTH_USER);  
    3. final  String basicAuthPass = config  
    4.     获得(HttpClientUtil.PROP_BASIC_AUTH_PASS);  

     

     

    如果使用这种方式,那么在创建内置的HttpSolrClient时需要传入参数,可以在PARAMS中加入基本认证即可。

     

    的Java代码  收藏代码

    1. ModifiableSolrParams params =  new  ModifiableSolrParams();  
    2.       params.set(HttpClientUtil.PROP_MAX_CONNECTIONS,  128 );  
    3.       params.set(HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST,  32 );  
    4.       params.set(HttpClientUtil.PROP_FOLLOW_REDIRECTS,  false );  
    5.       params.set(HttpClientUtil.PROP_BASIC_AUTH_USER,  “admin” );  
    6.       params.set(HttpClientUtil.PROP_BASIC_AUTH_PASS,  “zhen.com” );  
    7.       params.set(HttpClientUtil.PROP_MAX_CONNECTIONS,  1000 );  
    8.       params.set(HttpClientUtil.PROP_ALLOW_COMPRESSION,  true );  
    9.       params.set(HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST,  1000 );  
    10.       CloseableHttpClient closeableHttpClient = HttpClientUtil.createClient(params);  
    11.    
    12. HttpSolrClient solrClient =  new  HttpSolrClient(solrurl,closeableHttpClient);  

      

    同样的方法也适用于CloudSolrClient。

    展开全文
  • solr

    2021-01-06 22:11:59
    Solr是一个独立的企业级搜索应用服务器,它对外提供Web-service的ApI接口接口,用户可以通过http请求,想搜索引擎提交一定格式的XML文件,生成索引,也可以通过Http Get操作提出查找请求,得到Xml格式的返回结果. ...
  • Solr

    2020-01-01 20:16:32
    1.Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口; 2.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引; 3.可以通过Http G Solret操作提出查找请求,并得到...

    什么是solr?solr有什么用处?

    一:什么是solr?
    1.Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口;
    2.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;
    3.可以通过Http G Solret操作提出查找请求,并得到XML格式的返回结果。

    二:为什么要用solr服务,为什么要用luncence?

    当我们访问购物网站的时候,比如www.taobao.com和www.jd.com时,我们可以根据自己随意所想的内容输入关键字就可以查询出相关的内容,这是怎么做到的?这些随意的数据不可能是根据数据库的字段查询的,为什么千奇百怪的关键字都可以查询出来呢?

    这就是全文检索工具的实现,luncence采用了词元匹配和切分词。
    举个例子:北京天安门------luncence切分词:北京 京天 天安 安门 等等这些分词。所以我们搜索的时候都可以检索到。

    有一种分词器就是IK中文分词器,它有细粒度切分和智能切分,即根据某种智能算法。

    这就使用solr的最大的好处:检索功能的实现。

    具体使用步骤:

    (1)solr服务器搭建,因为solr是用java5开发的,所以需要jdk和tomcat搭建部署;

    (2)搭建完成后,我们需要将要展示的字段引入solr的库中。配置spring与solr结合,工程启动的时候启动solr;

    (3)将数据库中的查询内容导入到solr索引库,这里使用的是solrj的客户端实现的。具体使用可以参考api;

    (4)建立搜索服务,供客户端调用。调用solr,查询内容,这中间有分页功能的实现。solr高亮显示的实现。

    (5)客户端接收页面的请求参数,调用搜索服务,进行搜索。

    三:slor和lucene的区别
    首先Solr是基于Lucene做的,Lucene是一套信息检索工具包,但并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工
    具、排序等功能,因此在使用Lucene时你仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。而Solr的目标是打造一款
    企业级的搜索引擎系统,因此它更接近于我们认识到的搜索引擎系统,它是一个搜索引擎服务,通过各种API可以让你的应用使用搜索服
    务,而不需要将搜索逻辑耦合在应用中。而且Solr可以根据配置文件定义数据解析的方式,更像是一个搜索框架,它也支持主从、热换库
    等操作。还添加了飘红、facet等搜索引擎常见功能的支持。因而,Lucene使用上更加灵活,但是你需要自己处理搜素引擎系统架构,以
    及其他附加附加功能的实现。而Solr帮你做了更多,但是是一个处于高层的框架,Lucene很多新特性不能及时向上透传,所以有时候可能
    发现需要一个功能,Lucene是支持的,但是Solr上已经看不到相关接口。

    展开全文
  • 目录 1 Solr管理页面的查询入口 2 Solr查询输入框简介 3 Solr管理页面的查询方案 1 Solr管理页面的查询入口 选中需要查询的SolrCore, 然后在菜单栏选择[Query]: ...(1) select: 查询请求处理器. (2) q:...

    1 Solr管理页面的查询入口

    选中需要查询的SolrCore, 然后在菜单栏选择[Query]:
    图片

    2 Solr查询输入框简介

    (1) select: 查询请求处理器.
    图片

    (2) q: 是query的简写, 指定查询表达式.
    图片

    *:* ——表示查询所有, 比如:
    product_name:花儿朵朵, 表示"product_name"字段中包含"花儿朵朵".

    (3) fq: 是filter query的简写, 是一个数组, 可以指定多个. 在q的查询结果中, 执行过滤. 前提是: 必须先指定q查询.
    图片

    product_price:[* TO 20], 表示查询商品价格在20块钱以内, 包含20;
    product_price:[* TO 20}, 表示查询商品价格在20块钱以内, 不包含20.

    (4) sort: 指定搜索结果的排序.
    图片

    product_price desc —— 表示按照商品价格降序;
    product_price asc —— 表示按照商品价格升序;
    product_price desc, product_catalog asc —— 表示按商品价格降序, 按商品分类id升序(多个Field排序, 以半角逗号<也就是英文中的逗号“,”>分割).

    (5) start,rows: 指定搜索结果分页:
    图片

    与MySQL等数据库中的limit不同, 这里:

    start —— 表示从第start条文档开始;
    rows —— 表示返回rows条文档.

    (6) fl: 是field list的简写, 用来指定搜索结果显示的域列表.
    图片

    (7) id, product_name, product_price, product_catalog_name, 表示返回的结果中, 只显示商品Id, 商品名称, 商品价格, 商品类别名称这几个Field的内容, 其他的Field不显示.

    (8) df: 是default field的简写, 指定默认搜索域 —— 只能指定一个, 会覆盖schema.xml文件中的配置.
    图片

    (9) wt: 是writer type的简写, 指定返回搜索结果时的显示格式, 也就是响应的数据的格式, 其中csv是一种类似于记事本的格式.

    indent: 缩进, 格式良好地显示查询结果;
    debugQuery: 打印查询的调试信息.
    图片

    (10) dismax、edismax: 查询解析器, 一般不选择. /select等使用的是标准查询解析器.

    (11) hl: 是highlight的简写, 用来设置高亮显示. 前提: 高亮显示的field, 需要存储, 也就是在schema.xml文件中配置stored=true.
    图片

    hl.fl: 高亮显示的域的名称;
    hl.simple.pre: 高亮显示的HTML标签前缀;
    hl.simple.post: 高亮显示的HTML标签后缀;
    hl.requireFieldMatch: 默认为false, 若选中(为true), 则需要hl.fl指定字段, 查询结果才会高亮;
    hl.usePhraseHighlighter: 如果查询语句中含有引号括起来的短语, 那么只有完全匹配短语的内容才会高亮;
    hl.highlightMultiTerm: 默认为false, 若选中且hl.usePhraseHighlighter为true时, 如果使用通配符和模糊搜索, 那么会确保与通配符匹配的term才会高亮.

    (12) facet: 是Solr中的统计接口, 意为分组统计(分片统计), 如电商中的组合多条件搜索:
    图片

    facet查询设置界面:
    图片
    facet.query: 指定组内初始化统计条件
    facet.field: 指定分组统计的域的名称(通常使用分类域)
    facet.prefix: 指定组内过滤查询条件的前缀

    (13) spatial: 空间查询, 是基于经纬度坐标点的地理位置查询.

    (14) spellcheck: 拼写检查, 也就是在输入检索的字段时, 尽心智能提醒和匹配.

    3 Solr管理页面的查询方案

    说明: 使用SolrJ实现页面的查询效果, 要求参数和结果与页面一致.

    (1) 页面搜索条件:
    图片

    (2) 页面搜索结果:
    文档结果以及分组统计结果:
    图片

    (3) 高亮显示结果:
    图片

    注意事项:

    ① 由上图可知, Solr在高亮查询时, 高亮结果集与正常结果集是分开返回的, 为了与正常结果集中的其他内容相匹配, 这里需要设置主键进行结果的关联.
    ② 另外, 对于multiValued=true的字段, 不要进行高亮设置 -- 它只会返回匹配高亮的值, 不能确定是何条数据.
    ③ 也可通过HTTP请求的方式进行高亮设置, HTTP请求示例:
    http://localhost:7070/solr/select?q=product_name:花儿朵朵&hl=true&hl.fl=product_name&hl.simple.pre=<font color='red'>&hl.simple.post=</font>
    ④ 也可通过配置solrconfig.xml文件, 是默认搜索方案具有高亮功能: 在<requestHandler name="/select" class="solr.SearchHandler" default="true">下配置.
    图片

    版权声明

    作者: 马瘦风

    出处: 博客园 马瘦风的博客

    您的支持是对博主的极大鼓励, 感谢您的阅读.

    本文版权归博主所有, 欢迎转载, 但请保留此段声明, 并在文章页面明显位置给出原文链接, 否则博主保留追究相关人员法律责任的权利.

    转载于:https://www.cnblogs.com/shoufeng/p/9838795.html

    展开全文
  • solr install

    2017-07-24 12:20:44
     Solr是一个独立的企业及搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...

    一、solr简介:

         Solr是一个独立的企业及搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。solr可以运行在Jetty、Tomcat等服务器上面。

     

    二、solr下载:

         solr最新版的下载链接是:http://mirrors.hust.edu.cn/apache/lucene/solr/6.4.2/,通过上述地址下载Zip文件即可,但是基于不使用最新版的保守心理,我任然在适用4.10.3版本,这里附上4.10.3版的下载地址:http://archive.apache.org/dist/lucene/solr/4.10.3/,当然,如果还是下载不了,请到我的cnbolg下下载。

     

    三、solr安装在Tomcat下:

         1、环境介绍:

                JDK:jdk1.8.0_121,请使用1.7及以上版本,笔者在JDK1.6上solr配置之后跑不起来

                Tomcat:apache-tomcat-7.0.73

                solr:solr-4.10.3

        2、solr目录介绍:下载solr加压后的目录结构如图所示

    bin是solr运行的脚本

          contrib是solr的一些插件,用于扩展solr的功能

          dist该文件夹下包含build过程中产生的war和jar文件,以及相关的依赖文件

          doc:solr的文档

          example:solr官方提供的一些示例程序,简要介绍几个示例

                    solr:该目录是一个包含了默认配置信息的Solr的Core目录

                    multicore:该目录包含了在Solr的multicore中设置的多个Core目录

                    webapps:该目录中包括一个solr.war,该war可作为solr的运行实例工程 

         licenses:solr相关的一些许可信息

    3、创建solr工程

           ① 创建solr文件夹,在solr文件夹下创建solrHome文件夹,solrHome是solr运行的主目录,其下可以建立多个solr实例工程,及solrCore,solrCore单独对外提供一个搜索服务。

           ② 将solr-4.10.3\example\solr\下的所有文件copy到新建的solr工程的solrHome下,collection1即是一个solrCore,每个solrCore下的conf文件下都有solrconfig.xml文件,这是solrCore运行的配置文件。(solr-4.10.3是解压下载的Zip文件)

     ③ 将solr-4.10.3下的contrib和dist 复制到solr下,与solrHome同级

    ④ 加载jar包:打开solrCore(collection1)下conf文件中的solrconfig.xml文件,找到引用jar包的代码

     

      <lib dir="${solr.install.dir:../../..}/contrib/extraction/lib" regex=".*\.jar" />
      <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-cell-\d.*\.jar" />
    
      <lib dir="${solr.install.dir:../../..}/contrib/clustering/lib/" regex=".*\.jar" />
      <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
    
      <lib dir="${solr.install.dir:../../..}/contrib/langid/lib/" regex=".*\.jar" />
      <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-langid-\d.*\.jar" />
    
      <lib dir="${solr.install.dir:../../..}/contrib/velocity/lib" regex=".*\.jar" />
      <lib dir="${solr.install.dir:../../..}/dist/" regex="solr-velocity-\d.*\.jar" />


    注: solr.install.dir表示solrCore的位置,需要根据实际jar包的位置更改jar包引用路径

     

             每两个点“..”代表退到上一级目录,所以退了两级目录,到了solr目录,因此上图表示的是在引用的jar包在solr目录下的contrib或者dist目录下

     ⑤更改dataDir:每个SolrCore都有自己的索引文件目录 ,默认在SolrCore目录下的data中

    <!-- Data Directory
    
           Used to specify an alternate directory to hold all index data
           other than the default ./data under the Solr home.  If
           replication is in use, this should match the replication
           configuration.
        -->
      <dataDir>${solr.data.dir:}</dataDir>


    新建的solrCore没有data,data在项目运行时自动生成,如上所示使用默认目录,等于<dataDir>${solr.data.dir:D:/solr/solrHome/collection1/data}</dataDir>,如需自定义data则更改对应的路径。

    4)solr工程部署到Tomcat上

          ①将solr-4.10.3\dist下的solr-4.10.3.war复制到Tomcat的webapp目录下,并改名为solr.war

          ②启动Tomcat后,solr.war自动解压之后删除solr.war;或者用360压缩工具解压。

          ③将solr-4.10.3\example\lib\ext下所有jar包复制到webapps\solr\WEB-INF\lib目录下

          ④修改webapps\solr\WEB-INF下的web.xml文件:目的是将Tomcat中的solr关联上之前创建的solr工程

     <env-entry>
           <env-entry-name>solr/home</env-entry-name>
           <env-entry-value>D:\solr\solrHome</env-entry-value>
           <env-entry-type>java.lang.String</env-entry-type>
        </env-entry>

    ⑤ 复制log4j.properties文件

               在webapps\solr\WEB-INF下新建classes文件夹,将solr-4.10.3\example\resources下的log4j.properties文件复制到classes目录下

    ⑥ 启动Tomcat,在浏览器中访问http://localhost:8080/solr ,结果如下:

    5)保存一条数据

    浏览器输入查询URL:http://localhost:8080/solr/collection1/select?q=title:change.me

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 411
精华内容 164
关键字:

web请求solr