??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
Java打多?/span>zip压羃?/span>
-- ByteArrayOutputStreaml合org.apache.commons.compress来实?/span>
也就是很多个zip文gQ但是打包的时候,部分要先集中C?/span>zip文g后,再写入ȝzip文g?/span>
可以采用临时文g夹的方式来解冻I下面也是一U解x法,部分代码如下Q?/span>
File f1 = new File("C:/boot.ini"); File f2 = new File("C:/NTDETECT.COM");
final ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
//changed @ 2009q?/span>7?/span>21?/span>8:37:41 //ArchiveOutputStream ostemp = new ArchiveStreamFactory().createArchiveOutputStream("zip", baos); ZipArchiveOutputStream ostemp = new ZipArchiveOutputStream(baos); ostemp.setEncoding("GBK");
ostemp.putArchiveEntry(new ZipArchiveEntry(f1.getName())); IOUtils.copy(new FileInputStream(f1), ostemp); ostemp.closeArchiveEntry();
ostemp.putArchiveEntry(new ZipArchiveEntry(f2.getName())); IOUtils.copy(new FileInputStream(f2), ostemp); ostemp.closeArchiveEntry();
ostemp.finish(); ostemp.close();
final OutputStream out = new FileOutputStream("c:/test.zip"); ArchiveOutputStream os = new ArchiveStreamFactory().createArchiveOutputStream("zip", out);
os.putArchiveEntry(new ZipArchiveEntry("打包.zip")); baos.writeTo(os); os.closeArchiveEntry();
baos.close();
os.finish(); os.close(); |
[changed @ 2009q?/span>7?/span>21?/span>8:37:41]
当初查资料时Q就知道有个q错误Q自׃没发现过Q后来发现是因ؓwinrar 3.8已经解决了这个问题?/span>
但是Z和其他兼容,修改了代码?/span>
打包后效果如下图Q?/span>
参考资料:
1?/span>Commons Compress
http://labs.xiaonei.com/apache-mirror/commons/compress/binaries/commons-compress-1.0-bin.tar.gz
2?/span>java.io.ByteArrayOutputStream
http://java.sun.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html
3、本文地址
http://docs.google.com/View?id=ajfmzbdvh8wz_38ftxv59f6
Apache Solr集成至Tomcat
原有pȝ已经开发,框架?span lang="RU">SSH为基Q页面编?span lang="RU">GBKQ数据库?span lang="RU">oracleQ容器ؓtomcat6Q需要整合全文检索,下面只是一个简单的整合试?/span>
1、嵌?span lang="RU">TomcatQ?/span>
解压 apache-solr-1.3.0.tgzQ拷?span lang="RU">apache-solr-1.3.0\example\example-DIH\solr目录?span lang="RU">Tomcat的安装目录后Q修?span lang="RU">solr目录中的solr.xmlQ屏?span lang="RU">rss部分的配|,内容如下Q?/span>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
<Context docBase="${catalina.home}/webapps/solr.war" debug="0" crossContext="true" > |
<Connector port="8983" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> |
2、配|?/span>DataImportHandlerQ?/span>
change @ 2009q?/span>7?/span>1?/span>10:19:57
主要修改Tomcat\solr\db\conf\db-data-config.xml?/span>Tomcat\solr\db\conf\schema.xml?/span>Tomcat\solr\db\conf\solrconfig.xmlQ三个配|文Ӟ
<dataConfig> <dataSource driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:orcl" user="solr" password="solr" batchSize="50"/> <document name="contents" > <entity name="content" pk="ID" query="select * from CONTENT" deltaQuery="select ID from CONTENT where to_char(PUBTIME,'yyyy-mm-dd hh24:mi:ss') > '${dataimporter.last_index_time}'" transformer="ClobTransformer"> <field name="title" column="TITLE" /> <field column="CONTENT" clob="true"/> <field name="pubtime" column="PUBTIME" /> </entity> </document> </dataConfig> |
?/span>types标签最后,q加fieldtypeQ名UCؓtext_cjkQ中日韩分词分析器;
......
<fieldtype name="text_cjk" class="solr.TextField"> <analyzer class="org.apache.lucene.analysis.cjk.CJKAnalyzer"/> </fieldtype>
</types> |
屏蔽或清?/span><fields></fields>中的全部代码Qƈd如下内容Q?/span>
<fields> <field name="id" type="slong" indexed="true" stored="true" required="true" /> <field name="title" type="text_cjk" indexed="true" stored="false"/> <field name="content" type="text_cjk" indexed="true" stored="true"/> <field name="pubtime" type="date" indexed="true" stored="true"/> <field name="searchtext" type="text_cjk" indexed="true" stored="false" multiValued="true"/> </fields> |
修改默认唯一索引为先前定义的idQ?/span>
<uniqueKey>id</uniqueKey> |
修改默认搜烦字段为先前定义的searchtextQƈ要搜烦?/span>title?/span>content都拷贝到searchtext中,方便l一索:
......
<defaultSearchField>searchtext</defaultSearchField> ......
<copyField source="title" dest="searchtext"/> <copyField source="content" dest="searchtext"/> ...... |
add @ 2009q?/span>7?/span>1?/span>10:19:57
修改<dataDir></dataDir>标签中的索数据存放\径。内容如下:
<dataDir>${catalina.home}/solr/db/data</dataDir> |
3、导入和查询Q?/span>
pubtime:[2007-11-16T00:00:00Z TO 2008-11-28T00:00:00Z] AND 工作; pubtime desc |
点击搜烦Q测试?/span>
4?/span>xml解析Q?/span>
一个简?/span>solr查询l果的辅助搜索类Q内容如下:
import java.net.URL; import java.util.ArrayList; import java.util.Date; import java.util.List;
import org.dom4j.Document; import org.dom4j.Node; import org.dom4j.io.SAXReader; import org.apache.commons.lang.time.DateUtils;
public class SolrUtils { private List<Node> docs = new ArrayList<Node>(); private Number numFound = 0; private Document doc; public List<Node> getDocs() { return docs; }
public Number getNumFound() { return numFound; } @SuppressWarnings("unchecked") public SolrUtils(String urlString) { doc = documentFromURL(urlString); if (doc != null ) { docs = (List<Node>)doc.selectNodes("/response/result/doc"); numFound = doc.numberValueOf("/response/result/@numFound"); } } public Document documentFromURL(String urlString){ try { SAXReader reader = new SAXReader(); URL url = new URL(urlString); doc = reader.read(url); return doc; } catch (Exception e) { e.printStackTrace(); } return null; }
public static String valueOf(Object obj, String name){ return valueOf(obj, "str", name); } public static Date dateValueOf(Object obj, String name){ String[] parsePatterns = new String[]{ "yyyy-MM-dd'T'HH:mm:ss'Z'", "yyyy-MM-dd'T'HH:mm:ss.S'Z'", "yyyy-MM-dd'T'HH:mm:ss.SS'Z'", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", }; try { return DateUtils.parseDate(valueOf(obj, "date", name), parsePatterns); } catch (Exception e) { e.printStackTrace(); } return null; } public static String valueOf(Object obj, String type, String name){ String path = "./" + type + "[@name='" + name + "']"; if (obj instanceof Node) { Node n = (Node)obj; return n.valueOf(path); } return ""; } public static Number numberValueOf(Object obj, String type, String name){ String path = "./" + type + "[@name='" + name + "']"; if (obj instanceof Node) { Node n = (Node)obj; return n.numberValueOf(path); } return null; } public static void main(String[] args) throws Exception { String url = "http://localhost:8983/solr/db/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on"; SolrUtils su = new SolrUtils(url); System.out.println(su.getNumFound()); System.out.println(su.getDocs().size()); for (Node doc : su.getDocs()) { System.out.println(valueOf(doc, "id")); System.out.println(valueOf(doc, "title")); System.out.println(dateValueOf(doc, "pubtime")); }
}
} |
参考资料:
1?/span>Apache Solr 的新Ҏ?/span>
http://www.ibm.com/developerworks/cn/java/j-solr-update/
2?/span>Solr开发经?/span>[?/span>]
http://www.jinsehupan.com/blog/?p=25
3?/span>slf4j-jdk14-1.5.5.jar?/span>slf4j-api-1.5.5.jar?/span>solr-dataimporthandler-1.4-SNAPSHOT.jar
https://svn.apache.org/repos/asf/lucene/solr/trunk/lib/slf4j-jdk14-1.5.5.jar
https://svn.apache.org/repos/asf/lucene/solr/trunk/lib/slf4j-api-1.5.5.jar
4、本文地址
http://docs.google.com/View?id=ajfmzbdvh8wz_37f4jv46gb