倒排索引的测试.一个超级简单的实现.
两个类一个写入对象.一个读入对象还需要一个词典,写几个词作测试
美人计美人蕉美人鱼美容美发店美容师美容术美容院美声美食美食城美食家美事美术美术馆美术家美术界美术年美术片美术品美术师美术室美术纸美术字美谈美味美文美协美学美学家美意
import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.ObjectOutputStream;import java.util.ArrayList;import java.util.List;import java.util.Set;import java.util.TreeSet;public class Test {private static Set[] sets = new TreeSet ;private static List lists = new ArrayList() ;public static void main(String[] args) throws IOException {File file = new File("") ;System.out.println(file.getAbsolutePath());InputStream is = new FileInputStream("chinese.dct") ;InputStreamReader isr = new InputStreamReader(is) ;BufferedReader br = new BufferedReader(isr) ;String temp = null ;int k = 0;while((temp = br.readLine())!=null){char[] cs = temp.toCharArray() ;for (int i = 0; i < cs.length; i++) {if(sets]==null){sets] = new TreeSet<Integer>() ;}sets].add(k) ; }lists.add(temp) ;k++ ;}is.close() ;isr.close() ;br.close() ;FileOutputStream fis = new FileOutputStream("index.ansj") ;ObjectOutputStream oos = new ObjectOutputStream(fis) ;oos.writeObject(sets) ;}}
import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.util.Iterator;import java.util.Set;public class Read {public static void main(String[] args) throws IOException, ClassNotFoundException {InputStream is = new FileInputStream("index.ansj") ;ObjectInputStream ois = new ObjectInputStream(is) ;Set[] sets = (Set[]) ois.readObject() ;long start = System.currentTimeMillis() ;Set s1 = sets['美'];Set s2 = sets['术'];Iterator it = s2.iterator() ;int[] ints = new int ;int k = 0 ;while(it.hasNext()){Integer i = (Integer) it.next() ;if(s1.contains(i)){ints = i ;k++ ;if(k==10) break ;}}System.out.println(System.currentTimeMillis()-start+"毫秒");for (int i = 0; i < ints.length; i++) {System.out.println(ints);}}}
页:
[1]