锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
Java鎵撳閲?/span>zip鍘嬬緝鍖?/span>
-- ByteArrayOutputStream緇撳悎org.apache.commons.compress鏉ュ疄鐜?/span>
涔熷氨鏄緢澶氫釜zip鏂囦歡錛屼絾鏄墦鍖呯殑鏃跺欙紝閮ㄥ垎瑕佸厛闆嗕腑鍒頒竴涓?/span>zip鏂囦歡鍚庯紝鍐嶅啓鍏ユ葷殑zip鏂囦歡銆?/span>
鍙互閲囩敤涓存椂鏂囦歡澶圭殑鏂瑰紡鏉ヨВ鍐籌紝涓嬮潰涔熸槸涓縐嶈В鍐蟲柟娉曪紝閮ㄥ垎浠g爜濡備笅錛?/span>
File f1 = new File("C:/boot.ini"); File f2 = new File("C:/NTDETECT.COM");
final ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
//changed @ 2009騫?/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 @ 2009騫?/span>7鏈?/span>21鏃?/span>8:37:41]
褰撳垵鏌ヨ祫鏂欐椂錛屽氨鐭ラ亾鏈変釜涔辯爜閿欒錛岃嚜宸變粠娌″彂鐜拌繃錛屽悗鏉ュ彂鐜版槸鍥犱負winrar 3.8宸茬粡瑙e喅浜嗚繖涓棶棰樸?/span>
浣嗘槸涓轟簡鍜屽叾浠栧吋瀹癸紝淇敼浜嗕唬鐮併?/span>
鎵撳寘鍚庢晥鏋滃涓嬪浘錛?/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闆嗘垚鑷砊omcat
鍘熸湁緋葷粺宸茬粡寮鍙戯紝妗嗘灦浠?span lang="RU">SSH涓哄熀紜錛岄〉闈㈢紪鐮?span lang="RU">GBK錛屾暟鎹簱涓?span lang="RU">oracle錛屽鍣ㄤ負tomcat6錛岄渶瑕佹暣鍚堝叏鏂囨绱紝涓嬮潰鍙槸涓涓畝鍗曠殑鏁村悎嫻嬭瘯銆?/span>
1銆佸祵鍏?span lang="RU">Tomcat錛?/span>
瑙e帇 apache-solr-1.3.0.tgz錛屾嫹璐?span lang="RU">apache-solr-1.3.0\example\example-DIH\solr鐩綍鍒?span lang="RU">Tomcat鐨勫畨瑁呯洰褰曞悗錛屼慨鏀?span lang="RU">solr鐩綍涓殑solr.xml錛屽睆钄?span lang="RU">rss閮ㄥ垎鐨勯厤緗紝鍐呭濡備笅錛?/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>DataImportHandler錛?/span>
change @ 2009騫?/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.xml錛屼笁涓厤緗枃浠訛細
<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鏍囩鏈鍚庯紝榪藉姞fieldtype錛屽悕縐頒負text_cjk錛屼腑鏃ラ煩鍒嗚瘝鍒嗘瀽鍣紱
......
<fieldtype name="text_cjk" class="solr.TextField"> <analyzer class="org.apache.lucene.analysis.cjk.CJKAnalyzer"/> </fieldtype>
</types> |
灞忚斀鎴栨竻闄?/span><fields></fields>涓殑鍏ㄩ儴浠g爜錛屽茍娣誨姞濡備笅鍐呭錛?/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> |
淇敼榛樿鍞竴绱㈠紩涓哄厛鍓嶅畾涔夌殑id錛?/span>
<uniqueKey>id</uniqueKey> |
淇敼榛樿鎼滅儲瀛楁涓哄厛鍓嶅畾涔夌殑searchtext錛屽茍灝嗚鎼滅儲鐨?/span>title鍜?/span>content閮芥嫹璐濆埌searchtext涓紝鏂逛究緇熶竴媯绱細
......
<defaultSearchField>searchtext</defaultSearchField> ......
<copyField source="title" dest="searchtext"/> <copyField source="content" dest="searchtext"/> ...... |
add @ 2009騫?/span>7鏈?/span>1鏃?/span>10:19:57
淇敼<dataDir></dataDir>鏍囩涓殑媯绱㈡暟鎹瓨鏀捐礬寰勩傚唴瀹瑰涓嬶細
<dataDir>${catalina.home}/solr/db/data</dataDir> |
3銆佸鍏ュ拰鏌ヨ錛?/span>
pubtime:[2007-11-16T00:00:00Z TO 2008-11-28T00:00:00Z] AND 宸ヤ綔; pubtime desc |
鐐瑰嚮鎼滅儲錛屾祴璇曘?/span>
4銆?/span>xml瑙f瀽錛?/span>
涓涓畝鍗?/span>solr鏌ヨ緇撴灉鐨勮緟鍔╂悳绱㈢被錛屽唴瀹瑰涓嬶細
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