Moso 的个人资料魔战士照片日志列表 工具 帮助

日志


10月31日

配置solr

1. TomCat里的设置

   a.往D:\work\Tomcat 6.0\conf\Catalina\localhost目录下加入一个solr.archive.xml(其中D:\work\Tomcat 6.0为我的Tomcat目录).内容如下:
 #1 <Context docBase="D:\work\Tomcat 6.0\solr.archive\lib\apache-solr-1.3-dev.war" debug="0" crossContext="true" >
  
 #2 <Environment name="solr/home" type="java.lang.String" value="D:\work\Tomcat 6.0\solr.archive" override="true" />
</Context>


 #1 指名了solr server处理的jar包的目录,包括更新document(add,delete,update)及查询等功能. 在此目录下,需要有这个jar包.
 #2  指名了环境,value="D:\work\Tomcat 6.0\solr.archive"指明,更新及搜索document在这个目录下进行.
  
   b.往D:\work\Tomcat 6.0 加入一个solr.archive文件夹,内有lib, data, conf三个文件夹。其中的lib包含了server运行需要的库,data则是搜索的数据,conf里的
schema.xml定义了index.

   现在,只需要运行tomcat,就可以在游览器里输入 http://localhost:8080/solr.archive/admin/,就可以运用solr搜索了.

2. java工程里需要的包
   solr-solrj-1.3.0.jar
    solr-common-1.3.0.jar
 solr-client-solrj-1.3.0.jar
转到这三个包所在的目录(command下),执行(当然要已安装maven)
mvn install:install-file -DgroupId=org.apache.solr -DartifactId=solr-solrj -Dversion=1.3.0 -Dpackaging=jar -Dfile=solr-solrj-1.3.0.jar

mvn install:install-file -DgroupId=org.apache.solr -DartifactId=solr-common -Dversion=1.3.0 -Dpackaging=jar -Dfile=solr-common-1.3.0.jar

mvn install:install-file -DgroupId=org.apache.solr -DartifactId=solr-client-solrj -Dversion=1.3.0 -Dpackaging=jar -Dfile=solr-client-solrj-1.3.0.jar.
这样,在Java工程中,就可以通过如下方面要搜索的document.
 public void addDoc()throws Exception
 {
  String DEFAULT_SOLR_ARCHIVE_SERVER_LOCATION = "http://localhost:9080/solr.archive";
  SolrServer ss = new CommonsHttpSolrServer(DEFAULT_SOLR_ARCHIVE_SERVER_LOCATION);
  SolrInputDocument sid = new SolrInputDocument();
  //sid add fields here.
  ss.add(sid);
 }

3. 我们的工作
  定义我们的schema( index ),手动地,或用2中的java工程更新document就可以

10月26日

说句心理话

英文版,被雷到了,orz. Siu Leung太有才了,这都能发现。
10月9日

Java泛型,真是个怪物

Java泛型真是orz,擦除加安插代码造就了这个怪物。
1. 非泛型类的泛型方法。

class Tool
{
 public static <T> ArrayList<T> getCol()
 {
  return new ArrayList<T>();
 }
}
a. Tool.getCol(). 此表达式产生了一个ArrayList<Object> ,这归功于类型参数擦除。
b. Tool.<String>getCol(). 此表达式产生了一个ArrayList<String>,奇怪的语法。
c. ArrayList col = Tool.<String>getCol(), 产生了一个ArrayList<Object>,编译器真是伟大.
d. ArrayList<String> col = Tool.getCol(),产生了一个ArrayList<String>。
看来,编译器通过如下途径识别泛型的类型:
a.奇怪语法指明的类型,如Tool.<String>getCol();
b.方法的参数类型提供的信息。
c.左值中含有的类型信息。
而C例中左值没有指明类型信息,编译器忽视了右值中的类型信息。
崩溃。