List of usage examples for org.apache.lucene.index IndexWriter getReader
DirectoryReader getReader() throws IOException
From source file:org.elasticsearch.index.field.data.shorts.ShortFieldDataTests.java
License:Apache License
@Test public void intFieldDataTests() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(4)) .add(new NumericField("mvalue").setIntValue(104)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(3)) .add(new NumericField("mvalue").setIntValue(104)).add(new NumericField("mvalue").setIntValue(105)) .build());/*from ww w. ja v a2s. c o m*/ indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(7)).build()); indexWriter.addDocument(doc().add(new NumericField("mvalue").setIntValue(102)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(4)).build()); IndexReader reader = indexWriter.getReader(); ShortFieldData sFieldData = ShortFieldData.load(reader, "svalue"); ShortFieldData mFieldData = ShortFieldData.load(reader, "mvalue"); assertThat(sFieldData.fieldName(), equalTo("svalue")); assertThat(sFieldData.multiValued(), equalTo(false)); assertThat(mFieldData.fieldName(), equalTo("mvalue")); assertThat(mFieldData.multiValued(), equalTo(true)); // svalue assertThat(sFieldData.hasValue(0), equalTo(true)); assertThat(sFieldData.docFieldData(0).isEmpty(), equalTo(false)); assertThat(sFieldData.value(0), equalTo((short) 4)); assertThat(sFieldData.docFieldData(0).getValue(), equalTo((short) 4)); assertThat(sFieldData.values(0).length, equalTo(1)); assertThat(sFieldData.docFieldData(0).getValues().length, equalTo(1)); assertThat(sFieldData.values(0)[0], equalTo((short) 4)); assertThat(sFieldData.docFieldData(0).getValues()[0], equalTo((short) 4)); assertThat(sFieldData.hasValue(1), equalTo(true)); assertThat(sFieldData.value(1), equalTo((short) 3)); assertThat(sFieldData.values(1).length, equalTo(1)); assertThat(sFieldData.values(1)[0], equalTo((short) 3)); assertThat(sFieldData.hasValue(2), equalTo(true)); assertThat(sFieldData.value(2), equalTo((short) 7)); assertThat(sFieldData.values(2).length, equalTo(1)); assertThat(sFieldData.values(2)[0], equalTo((short) 7)); assertThat(sFieldData.hasValue(3), equalTo(false)); assertThat(sFieldData.hasValue(4), equalTo(true)); assertThat(sFieldData.value(4), equalTo((short) 4)); assertThat(sFieldData.values(4).length, equalTo(1)); assertThat(sFieldData.values(4)[0], equalTo((short) 4)); // check order is correct final ArrayList<Short> values = new ArrayList<Short>(); sFieldData.forEachValue(new ShortFieldData.ValueProc() { @Override public void onValue(short value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo((short) 3)); assertThat(values.get(1), equalTo((short) 4)); assertThat(values.get(2), equalTo((short) 7)); // mvalue assertThat(mFieldData.hasValue(0), equalTo(true)); assertThat(mFieldData.value(0), equalTo((short) 104)); assertThat(mFieldData.values(0).length, equalTo(1)); assertThat(mFieldData.values(0)[0], equalTo((short) 104)); assertThat(mFieldData.hasValue(1), equalTo(true)); assertThat(mFieldData.value(1), equalTo((short) 104)); assertThat(mFieldData.docFieldData(1).getValue(), equalTo((short) 104)); assertThat(mFieldData.values(1).length, equalTo(2)); assertThat(mFieldData.docFieldData(1).getValues().length, equalTo(2)); assertThat(mFieldData.values(1)[0], equalTo((short) 104)); assertThat(mFieldData.docFieldData(1).getValues()[0], equalTo((short) 104)); assertThat(mFieldData.docFieldData(1).getValues()[1], equalTo((short) 105)); assertThat(mFieldData.hasValue(2), equalTo(false)); assertThat(mFieldData.hasValue(3), equalTo(true)); assertThat(mFieldData.value(3), equalTo((short) 102)); assertThat(mFieldData.values(3).length, equalTo(1)); assertThat(mFieldData.values(3)[0], equalTo((short) 102)); assertThat(mFieldData.hasValue(4), equalTo(false)); indexWriter.close(); // check order is correct values.clear(); mFieldData.forEachValue(new ShortFieldData.ValueProc() { @Override public void onValue(short value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo((short) 102)); assertThat(values.get(1), equalTo((short) 104)); assertThat(values.get(2), equalTo((short) 105)); }
From source file:org.elasticsearch.index.field.data.strings.StringFieldDataTests.java
License:Apache License
@Test public void stringFieldDataTests() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); indexWriter.addDocument(doc().add(field("svalue", "zzz")).add(field("mvalue", "111")).build()); indexWriter.addDocument(doc().add(field("svalue", "xxx")).add(field("mvalue", "222 333")).build()); indexWriter.addDocument(doc().add(field("mvalue", "333 444")).build()); indexWriter.addDocument(doc().add(field("svalue", "aaa")).build()); indexWriter.addDocument(doc().add(field("svalue", "aaa")).build()); IndexReader reader = indexWriter.getReader(); StringFieldData sFieldData = StringFieldData.load(reader, "svalue"); StringFieldData mFieldData = StringFieldData.load(reader, "mvalue"); assertThat(sFieldData.fieldName(), equalTo("svalue")); assertThat(sFieldData.multiValued(), equalTo(false)); assertThat(mFieldData.fieldName(), equalTo("mvalue")); assertThat(mFieldData.multiValued(), equalTo(true)); // svalue/* w ww . java 2 s . c om*/ assertThat(sFieldData.hasValue(0), equalTo(true)); assertThat(sFieldData.value(0), equalTo("zzz")); assertThat(sFieldData.docFieldData(0).getValue(), equalTo("zzz")); assertThat(sFieldData.values(0).length, equalTo(1)); assertThat(sFieldData.docFieldData(0).getValues().length, equalTo(1)); assertThat(sFieldData.values(0)[0], equalTo("zzz")); assertThat(sFieldData.docFieldData(0).getValues()[0], equalTo("zzz")); assertThat(sFieldData.hasValue(1), equalTo(true)); assertThat(sFieldData.value(1), equalTo("xxx")); assertThat(sFieldData.values(1).length, equalTo(1)); assertThat(sFieldData.values(1)[0], equalTo("xxx")); assertThat(sFieldData.hasValue(2), equalTo(false)); assertThat(sFieldData.hasValue(3), equalTo(true)); assertThat(sFieldData.value(3), equalTo("aaa")); assertThat(sFieldData.values(3).length, equalTo(1)); assertThat(sFieldData.values(3)[0], equalTo("aaa")); assertThat(sFieldData.hasValue(4), equalTo(true)); assertThat(sFieldData.value(4), equalTo("aaa")); assertThat(sFieldData.values(4).length, equalTo(1)); assertThat(sFieldData.values(4)[0], equalTo("aaa")); // check order is correct final ArrayList<String> values = new ArrayList<String>(); sFieldData.forEachValue(new FieldData.StringValueProc() { @Override public void onValue(String value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo("aaa")); assertThat(values.get(1), equalTo("xxx")); assertThat(values.get(2), equalTo("zzz")); // mvalue assertThat(mFieldData.hasValue(0), equalTo(true)); assertThat(mFieldData.value(0), equalTo("111")); assertThat(mFieldData.values(0).length, equalTo(1)); assertThat(mFieldData.values(0)[0], equalTo("111")); assertThat(mFieldData.hasValue(1), equalTo(true)); assertThat(mFieldData.value(1), equalTo("222")); assertThat(mFieldData.values(1).length, equalTo(2)); assertThat(mFieldData.values(1)[0], equalTo("222")); assertThat(mFieldData.values(1)[1], equalTo("333")); assertThat(mFieldData.hasValue(2), equalTo(true)); assertThat(mFieldData.value(2), equalTo("333")); assertThat(mFieldData.values(2).length, equalTo(2)); assertThat(mFieldData.values(2)[0], equalTo("333")); assertThat(mFieldData.values(2)[1], equalTo("444")); assertThat(mFieldData.hasValue(3), equalTo(false)); assertThat(mFieldData.hasValue(4), equalTo(false)); values.clear(); mFieldData.forEachValue(new FieldData.StringValueProc() { @Override public void onValue(String value) { values.add(value); } }); assertThat(values.size(), equalTo(4)); assertThat(values.get(0), equalTo("111")); assertThat(values.get(1), equalTo("222")); assertThat(values.get(2), equalTo("333")); assertThat(values.get(3), equalTo("444")); indexWriter.close(); }
From source file:org.elasticsearch.util.lucene.all.SimpleAllTests.java
License:Apache License
@Test public void testSimpleAllNoBoost() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); Document doc = new Document(); doc.add(new Field("_id", "1", Field.Store.YES, Field.Index.NO)); AllEntries allEntries = new AllEntries(); allEntries.addText("field1", "something", 1.0f); allEntries.addText("field2", "else", 1.0f); allEntries.reset();//from w ww. j av a2 s .c o m doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER))); indexWriter.addDocument(doc); doc = new Document(); doc.add(new Field("_id", "2", Field.Store.YES, Field.Index.NO)); allEntries = new AllEntries(); allEntries.addText("field1", "else", 1.0f); allEntries.addText("field2", "something", 1.0f); allEntries.reset(); doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER))); indexWriter.addDocument(doc); IndexReader reader = indexWriter.getReader(); IndexSearcher searcher = new IndexSearcher(reader); TopDocs docs = searcher.search(new AllTermQuery(new Term("_all", "else")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(0)); assertThat(docs.scoreDocs[1].doc, equalTo(1)); docs = searcher.search(new AllTermQuery(new Term("_all", "something")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(0)); assertThat(docs.scoreDocs[1].doc, equalTo(1)); searcher.close(); indexWriter.close(); }
From source file:org.elasticsearch.util.lucene.all.SimpleAllTests.java
License:Apache License
@Test public void testSimpleAllWithBoost() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); Document doc = new Document(); doc.add(new Field("_id", "1", Field.Store.YES, Field.Index.NO)); AllEntries allEntries = new AllEntries(); allEntries.addText("field1", "something", 1.0f); allEntries.addText("field2", "else", 1.0f); allEntries.reset();/*from w ww .j ava 2 s . com*/ doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER))); indexWriter.addDocument(doc); doc = new Document(); doc.add(new Field("_id", "2", Field.Store.YES, Field.Index.NO)); allEntries = new AllEntries(); allEntries.addText("field1", "else", 2.0f); allEntries.addText("field2", "something", 1.0f); allEntries.reset(); doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER))); indexWriter.addDocument(doc); IndexReader reader = indexWriter.getReader(); IndexSearcher searcher = new IndexSearcher(reader); // this one is boosted. so the second doc is more relevant TopDocs docs = searcher.search(new AllTermQuery(new Term("_all", "else")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(1)); assertThat(docs.scoreDocs[1].doc, equalTo(0)); docs = searcher.search(new AllTermQuery(new Term("_all", "something")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(0)); assertThat(docs.scoreDocs[1].doc, equalTo(1)); searcher.close(); indexWriter.close(); }
From source file:org.elasticsearch.util.lucene.all.SimpleAllTests.java
License:Apache License
@Test public void testMultipleTokensAllNoBoost() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); Document doc = new Document(); doc.add(new Field("_id", "1", Field.Store.YES, Field.Index.NO)); AllEntries allEntries = new AllEntries(); allEntries.addText("field1", "something moo", 1.0f); allEntries.addText("field2", "else koo", 1.0f); allEntries.reset();/*from ww w . j a v a 2 s . c o m*/ doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER))); indexWriter.addDocument(doc); doc = new Document(); doc.add(new Field("_id", "2", Field.Store.YES, Field.Index.NO)); allEntries = new AllEntries(); allEntries.addText("field1", "else koo", 1.0f); allEntries.addText("field2", "something moo", 1.0f); allEntries.reset(); doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER))); indexWriter.addDocument(doc); IndexReader reader = indexWriter.getReader(); IndexSearcher searcher = new IndexSearcher(reader); TopDocs docs = searcher.search(new AllTermQuery(new Term("_all", "else")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(0)); assertThat(docs.scoreDocs[1].doc, equalTo(1)); docs = searcher.search(new AllTermQuery(new Term("_all", "koo")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(0)); assertThat(docs.scoreDocs[1].doc, equalTo(1)); docs = searcher.search(new AllTermQuery(new Term("_all", "something")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(0)); assertThat(docs.scoreDocs[1].doc, equalTo(1)); docs = searcher.search(new AllTermQuery(new Term("_all", "moo")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(0)); assertThat(docs.scoreDocs[1].doc, equalTo(1)); searcher.close(); indexWriter.close(); }
From source file:org.elasticsearch.util.lucene.all.SimpleAllTests.java
License:Apache License
@Test public void testMultipleTokensAllWithBoost() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); Document doc = new Document(); doc.add(new Field("_id", "1", Field.Store.YES, Field.Index.NO)); AllEntries allEntries = new AllEntries(); allEntries.addText("field1", "something moo", 1.0f); allEntries.addText("field2", "else koo", 1.0f); allEntries.reset();/*from ww w .jav a 2s. c om*/ doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER))); indexWriter.addDocument(doc); doc = new Document(); doc.add(new Field("_id", "2", Field.Store.YES, Field.Index.NO)); allEntries = new AllEntries(); allEntries.addText("field1", "else koo", 2.0f); allEntries.addText("field2", "something moo", 1.0f); allEntries.reset(); doc.add(new Field("_all", AllTokenFilter.allTokenStream("_all", allEntries, Lucene.STANDARD_ANALYZER))); indexWriter.addDocument(doc); IndexReader reader = indexWriter.getReader(); IndexSearcher searcher = new IndexSearcher(reader); TopDocs docs = searcher.search(new AllTermQuery(new Term("_all", "else")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(1)); assertThat(docs.scoreDocs[1].doc, equalTo(0)); docs = searcher.search(new AllTermQuery(new Term("_all", "koo")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(1)); assertThat(docs.scoreDocs[1].doc, equalTo(0)); docs = searcher.search(new AllTermQuery(new Term("_all", "something")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(0)); assertThat(docs.scoreDocs[1].doc, equalTo(1)); docs = searcher.search(new AllTermQuery(new Term("_all", "moo")), 10); assertThat(docs.totalHits, equalTo(2)); assertThat(docs.scoreDocs[0].doc, equalTo(0)); assertThat(docs.scoreDocs[1].doc, equalTo(1)); searcher.close(); indexWriter.close(); }
From source file:org.elasticsearch.util.lucene.search.MoreLikeThisQueryTests.java
License:Apache License
@Test public void testSimple() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); indexWriter.commit();// ww w . j a v a 2s.c om assertThat("Index is empty after creation and commit", estimateRamSize(indexWriter), equalTo(0l)); indexWriter.addDocument(doc().add(field("_id", "1")).add(field("text", "lucene")).build()); indexWriter.addDocument(doc().add(field("_id", "2")).add(field("text", "lucene release")).build()); IndexReader reader = indexWriter.getReader(); IndexSearcher searcher = new IndexSearcher(reader); MoreLikeThisQuery mltQuery = new MoreLikeThisQuery("lucene", new String[] { "text" }, Lucene.STANDARD_ANALYZER); mltQuery.setLikeText("lucene"); mltQuery.setMinTermFrequency(1); mltQuery.setMinDocFreq(1); long count = Lucene.count(searcher, mltQuery, -1); assertThat(count, equalTo(2l)); reader.close(); indexWriter.close(); }
From source file:org.h2.fulltext.FullTextLucene2.java
License:Open Source License
/** * Get the index writer/searcher wrapper for the given connection. * * @param conn the connection/*from w w w. j a va 2 s .com*/ * @return the index access wrapper */ protected static IndexAccess getIndexAccess(Connection conn) throws SQLException { String path = getIndexPath(conn); synchronized (INDEX_ACCESS) { IndexAccess access = INDEX_ACCESS.get(path); if (access == null) { try { /*## LUCENE2 ## boolean recreate = !IndexReader.indexExists(path); Analyzer analyzer = new StandardAnalyzer(); access = new IndexAccess(); access.modifier = new IndexModifier(path, analyzer, recreate); //*/ //## LUCENE3 ## File f = new File(path); Directory indexDir = FSDirectory.open(f); boolean recreate = !IndexReader.indexExists(indexDir); Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30); IndexWriter writer = new IndexWriter(indexDir, analyzer, recreate, IndexWriter.MaxFieldLength.UNLIMITED); //see http://wiki.apache.org/lucene-java/NearRealtimeSearch IndexReader reader = writer.getReader(); access = new IndexAccess(); access.writer = writer; access.reader = reader; access.searcher = new IndexSearcher(reader); //*/ } catch (IOException e) { throw convertException(e); } INDEX_ACCESS.put(path, access); } return access; } }
From source file:org.h2.fulltext.FullTextLuceneEx.java
License:Open Source License
/** * Get the index writer/searcher wrapper for the given connection. * /* w ww.ja v a 2s. com*/ * @param conn the connection * @return the index access wrapper */ protected static IndexAccess getIndexAccess(Connection conn) throws SQLException { String path = getIndexPath(conn); synchronized (INDEX_ACCESS) { IndexAccess access = INDEX_ACCESS.get(path); if (access == null) { try { /* * ## LUCENE2 ## boolean recreate = * !IndexReader.indexExists(path); Analyzer analyzer = new * StandardAnalyzer(); access = new IndexAccess(); * access.modifier = new IndexModifier(path, analyzer, * recreate); // */ // ## LUCENE3 ## File f = new File(path); // Directory indexDir = FSDirectory.open(f); Directory indexDir = null; if (USE_RAM_DIRECTORY) { if (f.exists()) indexDir = new RAMDirectory(FSDirectory.open(f)); else indexDir = new RAMDirectory(); } else { indexDir = FSDirectory.open(f); } boolean recreate = !IndexReader.indexExists(indexDir); IndexWriter writer = new IndexWriter(indexDir, ANALYZER, recreate, IndexWriter.MaxFieldLength.UNLIMITED); // see http://wiki.apache.org/lucene-java/NearRealtimeSearch IndexReader reader = writer.getReader(); access = new IndexAccess(); access.writer = writer; access.reader = reader; access.searcher = new IndexSearcher(reader); // */ } catch (IOException e) { throw convertException(e); } INDEX_ACCESS.put(path, access); } return access; } }
From source file:org.weborganic.flint.SearcherManager.java
License:artistic-license-2.0
/** * Create a new SearcherManager using the given writer. * * @param writer the IndexWriter used to load the real-time reader. * @throws IOException If thrown while trying to get the reader. *///from w ww. j a v a2 s . c o m public SearcherManager(IndexWriter writer) throws IOException { IndexReader reader = writer.getReader(); // Lucene 3.1+: IndexReader.open(writer, true); this.currentSearcher = new IndexSearcher(reader); }