Example usage for org.apache.lucene.store RAMDirectory RAMDirectory

List of usage examples for org.apache.lucene.store RAMDirectory RAMDirectory

Introduction

In this page you can find the example usage for org.apache.lucene.store RAMDirectory RAMDirectory.

Prototype

public RAMDirectory() 

Source Link

Document

Constructs an empty Directory .

Usage

From source file:io.puntanegra.fhir.index.lucene.LuceneRAMIndex.java

License:Apache License

/**
 * Builds a new {@link LuceneRAMIndex}.//  w  w w  .j  av a 2s.  c om
 *
 * @param analyzer
 *            the index writer analyzer
 */
public LuceneRAMIndex(Analyzer analyzer) {
    try {
        directory = new RAMDirectory();
        indexWriter = new IndexWriter(directory, new IndexWriterConfig(analyzer));
    } catch (Exception e) {
        throw new FhirIndexException(e, "Error while creating index");
    }
}

From source file:io.vertigo.dynamo.plugins.collections.lucene.RamLuceneIndex.java

License:Apache License

/**
 * @param dtDefinition DtDefinition des objets indexs
 * @throws IOException Exception I/O// w ww. j ava  2 s . co  m
 */
RamLuceneIndex(final DtDefinition dtDefinition) throws IOException {
    Assertion.checkNotNull(dtDefinition);
    //-----
    indexAnalyser = new DefaultAnalyzer(false); //les stop word marchent mal si asymtrique entre l'indexation et la query
    luceneQueryFactory = new RamLuceneQueryFactory(indexAnalyser);
    this.dtDefinition = dtDefinition;
    directory = new RAMDirectory();

    //l'index est cre automatiquement la premiere fois.
    buildIndex();
}

From source file:ir.FacetLucene_1106022654.java

public static void main(String[] args) throws IOException, ParseException {
    //menyimpan daftar id semua dokume
    ArrayList idR = new ArrayList();
    //menyimpan daftar judul semua dokumen
    ArrayList judulR = new ArrayList();
    //menyimpa daftar teks untuk semua dokumen
    ArrayList teksR = new ArrayList();

    String id = "haha";
    String judul = "haha";
    String teks = "haha";
    String penulis = "haha";

    //membaca data semua dokumen
    File file = new File("D:\\Kuliah\\Sem 9\\Perolehan Informasi\\2015 - 2016\\Tugas\\Tugas 2\\Teks.txt");
    BufferedReader br = new BufferedReader(new FileReader(file));
    try {/*w w  w.  ja va2 s  . c  o m*/
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();
        String gabung = "";
        String gabung2 = "";
        boolean flag = false;
        while (line != null) {
            gabung = gabung + " " + line;
            gabung2 = gabung2 + " " + line;

            final Pattern patternID = Pattern.compile("<ID>(.+?)</ID>");
            final Pattern patternJ = Pattern.compile("<JUDUL>(.+?)</JUDUL>");
            boolean flag2;
            /**
             * penjelasan mengenai teknik untagging teks
             * setiap membaca </DOK> berarti satu dokumen berhasil dibaca sehingga kita bersiap membaca dokumen selanjutnya
             * flag diset false, karena sebelum membaca <DOK> tidak ada data yang disimpan 
             */
            String[] arg = line.trim().split(" ");
            if (line.equalsIgnoreCase("</DOK>")) {
                flag2 = false;
            }
            /**
             * setiap membaca <DOK>, kita bersiap untuk menyimpan data satu dokumen, sehingga flag di set menjadi true
             */
            if (line.equalsIgnoreCase("<DOK>")) {
                flag2 = true;
            }
            /**
             * selama flag di set true, kita membaca dan mengambil semua data yang berada di dalam tagging. 
             * untuk tahap ini, kita membaca id dan judul
             */
            if (flag2 = true) {
                //untagging <ID></ID>
                final Matcher matcherD = patternID.matcher(line);
                if (matcherD.matches()) {
                    id = matcherD.group(1);
                    idR.add(id);
                    //System.out.println("id ---> " + matcherD.group(1));
                }
                //untagging <JUDUL></JUDUL>
                final Matcher matcherJ = patternJ.matcher(line);
                if (matcherJ.matches()) {
                    judul = matcherJ.group(1);
                    judulR.add(judul);
                    //System.out.println("Judul ---> " + matcherJ.group(1));
                }
            }
            /**
             * setiap selesai membaca judul (artinya program menemukan tagging </JUDUL>) kita bersiap membaca teks
             * untuk membaca teks, algoritma sedikit berbeda dengan pembacaan id dan judul karena teks terdiri dari beberapa line.
             * idenya, kita membaca semua line dalam tag <TEKS> terlebih dahulu dan menyimpannya ke dalam variabel tipe string.
             * setelah menemukan tag </DOK> artinya semua teks dalam satu dokumen selesai di baca, kita menghilangkan tag yang tidak perlu 
             * kemudian menambahkannya ke ArrayList. 
             * variabel gabung merupakan variabel yang digunakan untuk menyimpan line teks yang dibaca, sehingga setelah semua teks dalam satu dokumen 
             * selesai dibaca, program kembali mengeset nilainya menjadi string kosong. 
             */
            for (int i = 0; i < arg.length; i++) {
                if (arg[i].endsWith("</JUDUL>")) {
                    gabung2 = "";

                }
                //untagging <TEKS></TEKS>
                if (arg[i].compareTo("</DOK>") == 0) {

                    //System.out.println("masuk");
                    gabung2 = gabung2.replaceAll("<TEKS>", "");
                    gabung2 = gabung2.replaceAll("</TEKS>", "");
                    gabung2 = gabung2.replaceAll("</DOK>", "");
                    teksR.add(gabung2);
                    //System.out.println("Teks ---> " + gabung2);
                    //System.out.println(id+judul+teks);
                    gabung = "";
                    gabung2 = "";
                }

            }

            line = br.readLine();
        }
        //menghitung jumlah masing - masing id,teks, dan judul untuk memastikan sudah sama
        System.out.println("size teks: " + teksR.size());
        System.out.println("size id: " + idR.size());
        System.out.println("size judul: " + judulR.size());

        String everything = sb.toString();
    } finally {
        br.close();
    }
    //inisialisasi direktori untuk menyimpan hasil index , taxonomy, dan fasetConfig
    Directory indexDir = new RAMDirectory();
    Directory taxoDir = new RAMDirectory();
    FacetsConfig fasetconfig = new FacetsConfig();

    //inisialisasi analyzer
    StandardAnalyzer analyzer = new StandardAnalyzer();
    IndexWriterConfig indexWriterconfigs = new IndexWriterConfig(analyzer);
    //inisialisasi IndexWriter
    IndexWriter writer = new IndexWriter(indexDir, indexWriterconfigs);

    //inisialisasi lokasi penyimpanan index kategori
    DirectoryTaxonomyWriter taxoWriter = new DirectoryTaxonomyWriter(taxoDir);

    //menambahkan dokumen kedalam file IndexWriter
    for (int d = 0; d < idR.size(); d++) {
        String[] ag = idR.get(d).toString().split("-");
        penulis = ag[0];
        id = (String) idR.get(d);
        judul = (String) judulR.get(d);
        teks = (String) teksR.get(d);
        //            System.out.println("id--->" + id);
        //            System.out.println("judul--->" + judul);
        //            System.out.println("teks--->" + teks);
        addDok(writer, penulis, id, judul, teks, taxoWriter, fasetconfig);
    }

    writer.close();
    taxoWriter.close();

    //baca file query
    File fileQ = new File("D:\\Kuliah\\Sem 9\\Perolehan Informasi\\2015 - 2016\\Tugas\\Tugas 2\\Query.txt");
    BufferedReader brQ = new BufferedReader(new FileReader(fileQ));
    //inisialisasi arraylist untuk menyimpan daftar query
    ArrayList listQ = new ArrayList();
    //menyimpan query yang sedang dibaca
    String lineQ = brQ.readLine();
    while (lineQ != null) {
        //masukkan query yang sedang dibaca ke daftar query
        listQ.add(lineQ);
        lineQ = brQ.readLine();
    }
    //inisialisasi lokasi menyimpan output
    Writer tulis = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
            "D:\\Kuliah\\Sem 9\\Perolehan Informasi\\2015 - 2016\\Tugas\\Tugas 2\\1106022654_Hasil_2.txt"),
            "utf-8"));

    //searching jumlah dokumen yang sesuai dengan masing - masing kueri berdasarkan kategori penulis
    for (int qu = 0; qu < listQ.size(); qu++) {
        ArrayList<FacetResult> results = new ArrayList<>();

        //inisialisasi 
        DirectoryReader indexReader = DirectoryReader.open(indexDir);
        IndexSearcher searcher = new IndexSearcher(indexReader);
        TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoDir);

        FacetsCollector fc = new FacetsCollector();

        String querystr = (String) listQ.get(qu);

        Query query = new QueryParser("teks", analyzer).parse(querystr);
        //melakukan pencarian dokumen berdasarkan kueri dan hasilnya dikumpan di FacetCollector
        searcher.search(query, fc);

        Facets facets = new FastTaxonomyFacetCounts(taxoReader, fasetconfig, fc);
        //System.out.print("masuk sini ");
        //menemukan kategori hasil pencarian dokumen dan melakukan penghitngan jumlah dokumen
        results.add(facets.getTopChildren(Integer.MAX_VALUE, "penulis"));
        System.out.println(listQ.get(qu));
        tulis.write((String) listQ.get(qu) + "\n");
        //menulis hasil pencarian ke dalam dokumen
        for (int f = 0; f < results.size(); f++) {
            for (int n = 0; n < (results.get(f)).labelValues.length; n++) {
                //hanya menyimpan kategori penulis dan jumlah dokumen
                String hasil = results.get(f).labelValues[n].toString() + "\n";
                tulis.write(hasil);
                System.out.println((results.get(f).labelValues[n]));
            }

        }
        tulis.flush();
        //            indexReader.close();
        //            taxoReader.close();
    }
}

From source file:ir.IndexAndSearch_1106022654.java

public static void main(String[] args) throws IOException, ParseException {
    //menyimpan daftar id semua dokumen
    ArrayList idR = new ArrayList();
    //menyimpan daftar judul semua dokumen
    ArrayList judulR = new ArrayList();
    //menyimpa daftar teks untuk semua dokumen
    ArrayList teksR = new ArrayList();

    String id = "haha";
    String judul = "haha";
    String teks = "haha";

    //membaca data semua dokumen
    String fileTeks = "D:\\Kuliah\\Sem 9\\Perolehan Informasi\\2015 - 2016\\Tugas\\Tugas 2\\Teks.txt";
    File file = new File(fileTeks);
    BufferedReader br = new BufferedReader(new FileReader(file));
    try {//from w w w .  j a  v  a  2 s .com
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();
        String gabung = "";
        String gabung2 = "";
        boolean flag = false;
        while (line != null) {
            gabung = gabung + " " + line;
            gabung2 = gabung2 + " " + line;

            final Pattern patternID = Pattern.compile("<ID>(.+?)</ID>");
            final Pattern patternJ = Pattern.compile("<JUDUL>(.+?)</JUDUL>");
            boolean flag2;
            /**
            * penjelasan mengenai teknik untagging teks
            * setiap membaca </DOK> berarti satu dokumen berhasil dibaca sehingga kita bersiap membaca dokumen selanjutnya
            * flag diset false, karena sebelum membaca <DOK> tidak ada data yang disimpan 
            */
            String[] arg = line.trim().split(" ");
            if (line.equalsIgnoreCase("</DOK>")) {
                flag2 = false;
            }
            /**
             * setiap membaca <DOK>, kita bersiap untuk menyimpan data satu dokumen, sehingga flag di set menjadi true
             */
            if (line.equalsIgnoreCase("<DOK>")) {
                flag2 = true;
            }
            /**
            * selama flag di set true, kita membaca dan mengambil semua data yang berada di dalam tagging. 
            * untuk tahap ini, kita membaca id dan judul
            */
            if (flag2 = true) {
                //untagging <ID></ID>
                final Matcher matcherD = patternID.matcher(line);
                if (matcherD.matches()) {
                    id = matcherD.group(1);
                    idR.add(id);
                    //System.out.println("id ---> " + matcherD.group(1));
                }
                //untagging <JUDUL></JUDUL>
                final Matcher matcherJ = patternJ.matcher(line);
                if (matcherJ.matches()) {
                    judul = matcherJ.group(1);
                    judulR.add(judul);
                    //System.out.println("Judul ---> " + matcherJ.group(1));
                }
            }
            /**
             * setiap selesai membaca judul (artinya program menemukan tagging </JUDUL>) kita bersiap membaca teks
             * untuk membaca teks, algoritma sedikit berbeda dengan pembacaan id dan judul karena teks terdiri dari beberapa line.
             * idenya, kita membaca semua line dalam tag <TEKS> terlebih dahulu dan menyimpannya ke dalam variabel tipe string.
             * setelah menemukan tag </DOK> artinya semua teks dalam satu dokumen selesai di baca, kita menghilangkan tag yang tidak perlu 
             * kemudian menambahkannya ke ArrayList. 
             * variabel gabung merupakan variabel yang digunakan untuk menyimpan line teks yang dibaca, sehingga setelah semua teks dalam satu dokumen 
             * selesai dibaca, program kembali mengeset nilainya menjadi string kosong. 
             */
            for (int i = 0; i < arg.length; i++) {
                if (arg[i].endsWith("</JUDUL>")) {
                    gabung2 = "";
                }
                //untagging <TEKS></TEKS>
                if (arg[i].compareTo("</DOK>") == 0) {
                    //System.out.println("masuk");
                    gabung2 = gabung2.replaceAll("<TEKS>", "");
                    gabung2 = gabung2.replaceAll("</TEKS>", "");
                    gabung2 = gabung2.replaceAll("</DOK>", "");
                    teksR.add(gabung2);
                    //System.out.println("Teks ---> " + gabung2);
                    //System.out.println(id+judul+teks);
                    gabung = "";
                    gabung2 = "";
                }

            }

            line = br.readLine();
        }
        //menghitung jumlah masing - masing id,teks, dan judul untuk memastikan sudah sama
        System.out.println("size teks: " + teksR.size());
        System.out.println("size id: " + idR.size());
        System.out.println("size judul: " + judulR.size());

        String everything = sb.toString();

    } finally {
        br.close();
    }
    //inisialisasi analyzer
    StandardAnalyzer analyzer = new StandardAnalyzer();
    //Directory index = FSDirectory.open(new File("D:\\Kuliah\\Sem 9\\Perolehan Informasi\\2015 - 2016\\Tugas\\Tugas 2\\index-dir.txt"));
    //membuat direktori untuk menyimpan hasil file index
    Directory index = new RAMDirectory();
    IndexWriterConfig config = new IndexWriterConfig(analyzer);
    //inisialisasi IndexWriter dan menentukan lokasi penyimpanan hasil Index
    IndexWriter writer = new IndexWriter(index, config);
    //menambahkan dokumen ke dalam IndexWriter
    for (int d = 0; d < idR.size(); d++) {
        //in.indexer();
        id = (String) idR.get(d);
        judul = (String) judulR.get(d);
        teks = (String) teksR.get(d);
        //            System.out.println("id--->" + id);
        //            System.out.println("judul--->" + judul);
        //            System.out.println("teks--->" + teks);
        addDok(writer, id, judul, teks);
    }
    writer.close();

    //baca file query
    File fileQ = new File("D:\\Kuliah\\Sem 9\\Perolehan Informasi\\2015 - 2016\\Tugas\\Tugas 2\\Query.txt");
    BufferedReader brQ = new BufferedReader(new FileReader(fileQ));
    //inisialisasi arraylist untuk menyimpan daftar query
    ArrayList listQ = new ArrayList();
    //menyimpan query yang sedang dibaca
    String lineQ = brQ.readLine();
    while (lineQ != null) {
        //System.out.println("QUERY");
        //masukkan query yang sedang dibaca ke daftar query
        listQ.add(lineQ);
        lineQ = brQ.readLine();
    }
    //menginisialisasi lokasi output
    Writer tulis = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
            "D:\\Kuliah\\Sem 9\\Perolehan Informasi\\2015 - 2016\\Tugas\\Tugas 2\\1106022654_Hasil_1.txt"),
            "utf-8"));

    //searching berdasarkan file query yang diberikan
    for (int qu = 0; qu < listQ.size(); qu++) {
        System.out.println("Query ---> " + listQ.get(qu));
        String querystr = (String) listQ.get(qu);
        //inisialisasi query
        Query query = new QueryParser("teks", analyzer).parse(querystr);

        //inisialisasi jumlah dokumen yang ditampilkan
        int hitsPerPage = 10;
        //membaca file index
        IndexReader reader = DirectoryReader.open(index);
        IndexSearcher searcher = new IndexSearcher(reader);
        //inisialisasi penyimpanan hasil pencarian dokumen dengan membatasi jumlahnya hanya 10 dokumen dengan score tertinggi
        TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage);
        //melakukan proses searching berdasarkan query yang diberikan dan disimpan ke collector
        searcher.search(query, collector);
        //mengambil 10 hasil tertinggi
        ScoreDoc[] hits = collector.topDocs().scoreDocs;

        //tulis hasil ke file
        tulis.write(querystr + "\n");
        System.out.println("Query string: " + querystr);
        for (int i = 0; i < hits.length; ++i) {
            int docId = hits[i].doc;
            Document d = searcher.doc(docId);
            System.out.println((i + 1) + ". " + d.get("id") + "\t" + d.get("judul"));
            tulis.write((i + 1) + ". " + d.get("id") + "\t" + d.get("judul") + "\n");
        }
        tulis.flush();
        //tulis.close();
    }

}

From source file:ir.project.Indexer.java

/**
 * Default constructor.
 */
public Indexer() {
    this.index = new RAMDirectory();
}

From source file:ir.project.IndexerForSNAP.java

/**
 * Default constructor.
 */
public IndexerForSNAP() {
    this.index = new RAMDirectory();
}

From source file:irlucene.CFCRetrieval.java

public CFCRetrieval(Analyzer analyzer) {
    index = new RAMDirectory();
    this.analyzer = analyzer;
    /*try {//w ww.j  a  v  a 2  s .  c  o  m
    index = FSDirectory.open(Paths.get("CFCindex/"));
    } catch (IOException ex) {
    Logger.getLogger(CFCRetrieval.class.getName()).log(Level.SEVERE, null, ex);
    }*/
}

From source file:irlucene.MEDRetrieval.java

public MEDRetrieval(Analyzer analyzer) {
    index = new RAMDirectory();
    this.analyzer = analyzer;
    /*try {/*from   w  ww.  jav a 2 s .  c  o  m*/
    index = FSDirectory.open(Paths.get("MEDindex/"));
    } catch (IOException ex) {
    Logger.getLogger(CFCRetrieval.class.getName()).log(Level.SEVERE, null, ex);
    }*/
}

From source file:it.unibz.instasearch.indexing.StorageIndexer.java

License:Open Source License

protected Directory getIndexDir() throws IOException {
    if (indexDir == null)
        indexDir = new RAMDirectory();

    return indexDir;
}

From source file:jfix.search.FullTextIndex.java

License:Open Source License

public FullTextIndex() {
    try {// ww  w. j  a  v  a  2s  .co m
        objects = new ArrayList<>();

        Analyzer analyzer = new StandardAnalyzer();
        IndexWriterConfig config = new IndexWriterConfig(
                new LimitTokenCountAnalyzer(analyzer, Integer.MAX_VALUE));

        indexDirectory = new RAMDirectory();
        indexWriter = new IndexWriter(indexDirectory, config);

        queryParser = new QueryParser("text", analyzer);
        queryParser.setDefaultOperator(QueryParser.AND_OPERATOR);

        fulltext = new TextField("text", "", Field.Store.NO);

        // Used as base-set for a NOT-Query
        Field inverse = new TextField("true", "yes", Field.Store.NO);

        document = new Document();
        document.add(fulltext);
        document.add(inverse);
    } catch (Exception e) {
        throw new RuntimeException(e.getMessage(), e);
    }
}