创建一个简单的搜索引擎模型

时间:2016-02-21 23:03:17

标签: java arrays string class constructor

这是一个家庭作业问题而且我已经困了很长时间了。我们正在学习一些搜索引擎技术,它将文档编入索引,计算每个单词出现在它们中的次数。我们必须创建两个类; 期限文档

Term 类具有:名为word的字符串,int freq(计算单词的频率),接受单词和freq的构造函数并初始化对象,获取方法和设置方法(但没有为freq设置方法。

文档类中,问题要求创建一个名为 terms 的数组,用于存储字符串的单词(假设我用空格分隔它们),双倍数量的字段测量sqrt(( terms [i] .freq)^ 2)的总和;其中freq是字符串中每个不同单词的频率。我必须创建一个带有单个String参数的构造函数作为全文,将其转换为小写,用白色空格拆分。接下来我必须创建一个静态排序方法,不需要java.util.Arrays的帮助,按字母顺序对字符串数组进行排序。然后我将创建一个 countDistinctStrings 方法,该方法将排序字符串作为参数,并计算唯一的字数(忽略重复)。然后一个名为 indexContent 从文档中获取一系列单词作为参数,填充 terms 数组,并计算幅度,我之前提到过。首先,该方法确定如何ny个不同的术语在原始数组中,然后创建一个适当大小的术语数组。它以排序的顺序将唯一的字符串放入术语并在表格中给出频率。输出应如下所示:     +输入文档的文本:         我希望我找到一些没有人听过的更好的声音我希望我能有更好的声音唱出一些更好的词语

  

期限频率列表:   一〜1,有〜1,一个人的〜1,即〜1,更好〜3,听到〜1,唱〜1,语音〜1,永远〜1,I〜4,有些〜2,愿望〜2,发现〜 1,没有~1,声音~1,单词~1。(但在表格中)幅度 6.708

这是我到目前为止的尝试:期限

import java.util.*;

public class Document 
{
String text;
private double magnitude;
static String terms [];

Document(String text) {
this.text = text;
text = text.toLowerCase();
String [] terms = text.split("\\s+");
for ( String s : terms)
System.out.println(s);

}
private static void sort (String [] terms) {
    String tempVar;
    for (int i = 0; i < terms.length;i++) {
        for(int j = 0; j <terms.length ; j++) {
                 if(terms[i].compareTo(terms[j]) > 0) {
                        tempVar = terms [j];
                        terms [j ]= terms [i];
                        terms [i] = tempVar;
                 }
             }
         }
         }
private  void countDistinctStrings () {
   Document.sort(terms);
}


public double getMagnitude(){
return magnitude;
}
public static void main(String [] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter the document text : ");
String text = input.nextLine();
Document object = new Document(text);
object.sort(terms);

}
}

然后文档类:(注意代码不完整,因为我不知道如何采取下一步,即如何将排序数组方法放入其他countDistinctStrings.I甚至无法使用我调用方法的对象,它会在线程“main”抛出异常java.lang.NullPointerException

public T randomElement() throws NoSuchElementException {
    T elem;
    int rand = (int) (1 + Math.random() * size);
    elem = items[rand];

    return elem;
}

我是初学者。我真的很感谢某人的帮助和时间在我的学习过程中。这个作业现在已经过期了,但我真的很想去理解它。

1 个答案:

答案 0 :(得分:1)

  1. 从构造函数
  2. 中删除'String []'
  3. 更改'&gt;'到'&lt;'在compareTo行上

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the document text : ");
        String text = input.nextLine();
        Document object = new Document(text);
        object.sort(terms);
        System.out.println("--- AFTER SORT ----");
        for (String s : terms)
            System.out.println(s);
    
    }
    
  4. 输出:

    Enter the document text : 
    I wish I found some better sounds no one's ever heard I wish I had a better voice that sang some better words
    i
    wish
    i
    found
    some
    better
    sounds
    no
    one's
    ever
    heard
    i
    wish
    i
    had
    a
    better
    voice
    that
    sang
    some
    better
    words
    --- AFTER SORT ----
    a
    better
    better
    better
    ever
    found
    had
    heard
    i
    i
    i
    i
    no
    one's
    sang
    some
    some
    sounds
    that
    voice
    wish
    wish
    words