kde.KDEImplementation.java Source code

Java tutorial

Introduction

Here is the source code for kde.KDEImplementation.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package kde;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.BytesRef;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.core.KeywordAnalyzer;
import org.apache.lucene.analysis.core.SimpleAnalyzer;
import org.apache.lucene.analysis.en.EnglishAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.DocsEnum;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.queryparser.analyzing.AnalyzingQueryParser;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.Version;

/**
 *
 * @author procheta
 *
 */
public class KDEImplementation {

    static final double val = Math.sqrt(2 * 3.14);

    public HashMap<String, Double> calculateKde(Set<String> judgedRel, ArrayList<String> unjudged,
            IndexReader reader, int qid, HashMap<Integer, HashMap<String, Double>> h1,
            HashMap<Integer, HashMap<String, Double>> h2) throws IOException {
        Iterator it = unjudged.iterator();
        HashMap<String, Double> estmatedList = new HashMap<String, Double>();
        double score = 0;
        //HashMap<Integer, HashMap<String, Double>> h1 = loadCosineValue("/home/procheta/Documents/Store.txt");
        //HashMap<Integer, HashMap<String, Double>> h2 = loadCosineValue("/home/procheta/Documents/Store1.txt");
        HashMap<String, Double> h3 = h1.get(qid);
        HashMap<String, Double> h4 = h2.get(qid);
        //System.out.println("h4 "+h4);
        for (int i = 0; i < unjudged.size(); i++) {
            String docid = unjudged.get(i);
            //  System.out.println(docid);
            score = 0;
            String docidair = "";
            double sim;
            for (String docId2 : judgedRel) {

                try {
                    docidair = docid + docId2;
                    // double sim = computeCosineSimilarity(getIndex(docid, reader), getIndex(docid2, reader),reader);
                    if (h3.containsKey(docidair)) {
                        sim = h3.get(docidair);

                    } else {
                        sim = h4.get(docidair);
                    }
                    score += Math.exp(((1 - sim) * (1 - sim)) / 2);
                } catch (Exception e) {
                    sim = 0;
                    score += Math.exp(((1 - sim) * (1 - sim)) / 2);
                    // System.out.println("docidPair  "+docidair);
                    // System.out.println(qid);
                }
            }
            //  System.out.println(score);
            score = score / judgedRel.size();
            //  System.out.println("score " + score);
            score = score / val;

            estmatedList.put(docid, score);

        }

        return estmatedList;
    }

    public static void main(String[] args) throws IOException, ParseException {
        KDEImplementation kde = new KDEImplementation();
        IndexReader reader = DirectoryReader
                .open(FSDirectory.open(new File("/media/procheta/3CE80E12E80DCADA/newIndex2")));
        reader.close();

    }

}