两个类一个写入对象.一个读入对象
还需要一个词典,写几个词作测试
美人计
美人蕉
美人鱼
美容美发店
美容师
美容术
美容院
美声
美食
美食城
美食家
美事
美术
美术馆
美术家
美术界
美术年
美术片
美术品
美术师
美术室
美术纸
美术字
美谈
美味
美文
美协
美学
美学家
美意
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[65535] ;
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[cs[i]]==null){
sets[cs[i]] = new TreeSet<Integer>() ;
}
sets[cs[i]].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[10] ;
int k = 0 ;
while(it.hasNext()){
Integer i = (Integer) it.next() ;
if(s1.contains(i)){
ints[k] = i ;
k++ ;
if(k==10) break ;
}
}
System.out.println(System.currentTimeMillis()-start+"毫秒");
for (int i = 0; i < ints.length; i++) {
System.out.println(ints[i]);
}
}
}
分享到:
相关推荐
3. 构建倒排列表:对于词典中的每个关键词,维护一个倒排列表(Posting List),记录包含该关键词的所有文档ID及其在文档中的位置。 4. 存储:将倒排索引存储在磁盘或内存中,以便后续查询。 三、C++实现倒排索引的...
大数据实验报告中,实现了使用Hadoop编程的InvertedIndex文档倒排索引程序。该程序使用Hadoop的MapReduce框架,通过Map、Combine和Reduce三个阶段,实现了文档倒排索引的生成。 标题解释: 大数据实验报告Hadoop...
mapreue倒排索引算法.doc
在这个实例中,我们将详细探讨如何使用MapReduce实现倒排索引。 首先,我们来看`Mapper`类。`InvertedIndexMapper`是Map阶段的核心,它负责将输入数据拆分成键值对(K1, V1)并转换为新的键值对(K2, V2)。在这个...
在这个项目中,我们使用Java编程语言来实现一个简单的搜索引擎,主要涉及以下几个核心知识点: 1. **倒排索引**:倒排索引是一种数据结构,它将每个词映射到包含这个词的所有文档的列表。在传统的正向索引中,我们...
倒排列表(PostingList):倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。 倒排文件...
每个词汇ID对应一个倒排列表(Posting List),记录包含该词汇的文档ID及在文档内的位置。 3. **倒排列表生成**:对于每份文档,遍历其词汇,将每个词汇的ID和文档的位置添加到相应的倒排列表中。这样,每个词汇的...
词典存储了所有出现过的词汇,每个词汇对应一个倒排列表。倒排列表则记录了每个词汇在文档中的出现位置,通常表示为文档编号和位置信息的组合。 在描述的场景中,我们假设已将网页文档转换为TXT格式,并使用了IK...
总的来说,基于Hadoop的倒排索引实现是一个结合了分布式计算和高效数据结构的优秀实践,它展示了如何利用MapReduce模型解决大数据场景下的文本检索问题。通过理解这一过程,开发者可以更好地运用Hadoop来处理复杂的...
在倒排索引中,每个单词都会映射到一个列表,这个列表包含了所有包含该单词的文档(或在本例中是.txt文件)的引用。这个引用通常是一个编号,代表文档在集合中的位置。当进行搜索时,系统会查找每个查询词在倒排索引...
Hadoop mapreduce 实现InvertedIndexer倒排索引,能用。
倒排索引
当遍历文本时,遇到一个单词,将其ID和所在文档的ID(或位置)作为一个对添加到相应的倒排列表中。 4. **编码和压缩**:为了节省存储空间,可以对倒排列表进行编码,比如使用变长编码(Variable-Length Encoding)...
### 一种高效的倒排索引存储结构 #### 引言 随着互联网的飞速发展,信息量呈现爆炸性增长,这对大规模信息检索系统的性能提出了更高要求。为了应对这一挑战,研究者们开始聚焦于倒排索引的优化,尤其是其存储结构...
基于Go实现简单的倒排索引源码+数据+sql数据库.zip基于Go实现简单的倒排索引源码+数据+sql数据库.zip基于Go实现简单的倒排索引源码+数据+sql数据库.zip基于Go实现简单的倒排索引源码+数据+sql数据库.zip基于Go实现...
山东大学大数据课程的实验二。...代码重构了setup(),map(),combiner(),partitation()和reducer()函数,功能是对文档进行倒排索引,得到一个单词有序,且单词的文件列表同样有序的倒排列表集合。