倒排索引java_用Java编写简单的文本文档倒排索引

c6d9e2411bd0254802b8608cec7a87a8.png

酉时酒味浓

其实我也不懂,但是我在百度文库那儿帮你搜了下文档,你看看可行不。import java.io.*;import java.text.*;import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class TextSY extends JFrame implements ActionListener {public static void main(String[] args) {TextSY mf = new TextSY();}JTextField tf = null;public TextSY() {       // 搜索器的图形界面super("倒排索引建立");this.setLayout(new FlowLayout());this.setSize(300, 200);this.setBackground(new Color(200, 200, 200));this.setResizable(false);// 窗口大小不能改变//将窗口放在屏幕中间的方法Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize = getSize();if (frameSize.height > screenSize.height) {frameSize.height = screenSize.height;}if (frameSize.width > screenSize.width) {frameSize.width = screenSize.width;}setLocation((screenSize.width - frameSize.width) / 2,(screenSize.height - frameSize.height) / 2);tf = new JTextField("d:/源文件.txt", 18);JButton b = new JButton("进行倒排索引");// JButton b_scanfile = new JButton("浏览文件"); //设置浏览文件功能按钮this.add(new Label("文件名:"));this.add(tf);// this.add(b_scanfile);this.add(b);b.addActionListener(this);this.setDefaultCloseOperation(EXIT_ON_CLOSE);setVisible(true);}public void actionPerformed(ActionEvent e) {ArrayList a1 = null; // 用于存放导入的数据 加上了ArrayList a2 = null; // 用于存放排序后的数据ArrayList a3 = null; // 用于存放合并后的数据a1 = addNumber(); // 将文件中的内容加上行数System.out.println("排序后数据");a2 = sortNumber(a1,0,a1.size()-1);//给ArrayList排序for (int i = 0; i < a2.size(); i++) { // 得到ArrayList的大小 用size()方法System.out.println(a2.get(i)); // 得到ArrayList中第i个数的值的方法为get(i)}System.out.println("倒排结果");a3 = deleNumber(a2);for (int i = 0; i < a3.size(); i++) { // 得到ArrayList的大小 用size()方法System.out.println(a3.get(i)); // 得到ArrayList中第i个数的值的方法为get(i)}print(a3);}public void print(ArrayList a){System.out.println("OK");PrintWriter pw;try {pw = new PrintWriter(new FileWriter( new File("d:/倒排索引结果.txt") ));for (int i = 0; i < a.size(); i++) { // 得到ArrayList的大小 用size()方法pw.println(a.get(i));}} catch (IOException e) {e.printStackTrace();}}// 将文件中的内容加上行数public ArrayList addNumber() {ArrayList al = null;FileInputStream fi = null;InputStreamReader isr = null;BufferedReader dis = null;try {fi = new FileInputStream(tf.getText());isr = new InputStreamReader(fi);dis = new BufferedReader(isr);}catch (FileNotFoundException e1) {// ta.setText("找不到你所需要的文件!");System.out.println("找不到你所需要的文件!");} catch (IOException e2) {System.out.println("输入或输出有误!");e2.printStackTrace();}try {int count = 1;String ss = "";al = new ArrayList(); // 用于存放读入的数据 加上了序号String s = dis.readLine();while (s!=null) {for (int i = 0; i < s.length(); i++) {if( (s.charAt(i)>='a'&&s.charAt(i)<='z') ||(s.charAt(i)>='A'&&s.charAt(i)<='Z') ||s.charAt(i)==' '){if (i!=s.length()-1 && s.charAt(i) != ' ') { // i!=s.length()-1 是用于判断是否是最后一个字符串 如果是就挑到下面ss = ss + s.charAt(i);}else {if(i==s.length()-1 && s.charAt(i)!=' '){// 当为最后一个字符串时 没有把最后一个字母加上就挑到这里 所以要加上ss=ss+s.charAt(i);}if(ss!=""){ // 排除多余的空格干扰ss = ss + " " + count;al.add(ss);}ss = "";}}}count++;s = dis.readLine();}dis.close();} catch (IOException e2) {System.out.println("输入或输出有误!");e2.printStackTrace();}return al;}//给ArrayList排序public ArrayList sortNumber(ArrayList a, int low, int high) {int n = a.size();int i = low;int j = high;String temp = a.get(low).toString();while (i < j) {while (i < j && a.get(j).toString().compareTo(temp) > 0) {j--;}if (i < j) {//a[i] = a[j];a.set(i,a.get(j));i++;}while (i < j && a.get(i).toString().compareTo(temp) <= 0) {i++;}if (i < j) {//a[j] = a[i];a.set(j,a.get(i));j--;}}//a[i] = temp;a.set(i,temp);if (i > low)sortNumber(a, low, i - 1);if (i < high)sortNumber(a, i + 1, high);return a;}//删除ArrayList中的相同项 合并相同的项public ArrayList deleNumber(ArrayList a){a.add(" ");ArrayList b=new ArrayList();String resultStr=null; //合并后的值存放在这个字符串中for(int i=0;i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值