List of usage examples for org.apache.lucene.store RAMDirectory RAMDirectory
public RAMDirectory()
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); } }