安装solr
尝试安装solr,发现网上的多数是不可配置成功的。坑爹啊。
?
1. 下载apache-solr-1.4.1
2. 解压 取出apache-solr-1.4.1\dist\apache-solr-1.4.1.war,改名为solr.war 并放到Tomcat的webapp目录下
3.?设置SolrHome,这个主要是设置 apache-solr-1.4.1/example/solr这个文件夹的位置,这里面放了solr的配置信息。 这个最坑爹,solr.solr.home 根本不起作用
Solr说有三种方式识别slor home:
1,让服务器在包含solr的目录中启动,或者把solr放到服务器的启动目录中。就是说是要solr和服务器在一个目录中。例如tomcat,是需要把solr放到bin目录中。
2,设置系统环境变量。这个绝对不行!绝对坑爹。和jdk版本没有什么关系,1.5以上就没问题。
3,设置JNDI,这个可以。
?
/**
? 327????? * Determines the instanceDir from the environment.
? 328????? * Tries JNDI (java:comp/env/solr/home) then system property (solr.solr.home);
? 329????? * if both fail, defaults to solr/
? 330????? * @return the instance directory name
? 331????? */
? 332???? /**
? 333????? * Finds the instanceDir based on looking up the value in one of three places:
? 334????? * <ol>
? 335????? *? <li>JNDI: via java:comp/env/solr/home</li>
? 336????? *? <li>The system property solr.solr.home</li>
? 337????? *? <li>Look in the current working directory for a solr/ directory</li>?
? 338????? * </ol>
? 339????? *
? 340????? * The return value is normalized.? Normalization essentially means it ends in a trailing slash.
? 341????? * @return A normalized instanceDir
? 342????? *
? 343????? * @see #normalizeDir(String)?
? 344????? */
? 345???? public static String locateInstanceDir() {
? 346?????? String home = null;
? 347?????? // Try JNDI
? 348?????? try {
? 349???????? Context c = new InitialContext();
? 350???????? home = (String)c.lookup("java:comp/env/"+project+"/home");
? 351???????? log.info("Using JNDI solr.home: "+home );
? 352?????? } catch (NoInitialContextException e) {
? 353???????? log.info("JNDI not configured for "+project+" (NoInitialContextEx)");
? 354?????? } catch (NamingException e) {
? 355???????? log.info("No /"+project+"/home in JNDI");
? 356?????? } catch( RuntimeException ex ) {
? 357???????? log.warning("Odd RuntimeException while testing for JNDI: " + ex.getMessage());
? 358?????? }?
? 359???????
? 360?????? // Now try system property
? 361?????? if( home == null ) {
? 362???????? String prop = project + ".solr.home";
? 363???????? home = System.getProperty(prop);
? 364???????? if( home != null ) {
? 365?????????? log.info("using system property "+prop+": " + home );
? 366???????? }
? 367?????? }
? 368???????
? 369?????? // if all else fails, try?
? 370?????? if( home == null ) {
? 371???????? home = project + '/';
? 372???????? log.info(project + " home defaulted to '" + home + "' (could not find system property or JNDI)");
? 373?????? }
? 374?????? return normalizeDir( home );
? 375???? }
第363行,其中的project值为solr.所以环境变量的应当为solr.solr.home.?可是System.getProperty是获取系统属性,不是获到环境变量.获取环境变量的方式应当是:System.getenv,所以用solr.solr.home无论如何也是取不到的.
