List of usage examples for org.apache.lucene.store RAMDirectory RAMDirectory
public RAMDirectory()
From source file:net.sourceforge.docfetcher.model.search.HighlightServiceTest.java
License:Open Source License
@SuppressWarnings("unchecked") @Test/* ww w .jav a 2 s.c o m*/ public void testPhraseHighlighter() throws Exception { // Create index Directory directory = new RAMDirectory(); Analyzer analyzer = new StandardAnalyzer(IndexRegistry.LUCENE_VERSION, Collections.EMPTY_SET); IndexWriterAdapter writer = new IndexWriterAdapter(directory); Document doc = new Document(); doc.add(new Field("content", "some text", Store.NO, Index.ANALYZED, TermVector.WITH_POSITIONS_OFFSETS)); writer.add(doc); Closeables.closeQuietly(writer); // flush unwritten documents into index // Perform phrase search QueryParser queryParser = new QueryParser(IndexRegistry.LUCENE_VERSION, "content", analyzer); Query query = queryParser.parse("\"text\""); FastVectorHighlighter highlighter = new FastVectorHighlighter(true, true, null, null); FieldQuery fieldQuery = highlighter.getFieldQuery(query); IndexSearcher searcher = null; try { searcher = new IndexSearcher(directory); TopDocs docs = searcher.search(query, 10); assertEquals(1, docs.scoreDocs.length); int docId = docs.scoreDocs[0].doc; // Get phrase highlighting offsets FieldTermStack fieldTermStack = new FieldTermStack(searcher.getIndexReader(), docId, "content", fieldQuery); FieldPhraseList fieldPhraseList = new FieldPhraseList(fieldTermStack, fieldQuery); java.lang.reflect.Field field = fieldPhraseList.getClass().getDeclaredField("phraseList"); field.setAccessible(true); LinkedList<WeightedPhraseInfo> list = (LinkedList<WeightedPhraseInfo>) field.get(fieldPhraseList); assertEquals(5, list.get(0).getStartOffset()); assertEquals(9, list.get(0).getEndOffset()); } finally { Closeables.closeQuietly(searcher); } }
From source file:net.sourceforge.docfetcher.model.TreeIndex.java
License:Open Source License
protected TreeIndex(@Nullable File indexParentDir, @NotNull File rootFile) { Util.checkNotNull(rootFile);//from w ww. ja v a 2s.c o m this.indexParentDir = indexParentDir; // Create config this.config = new IndexingConfig() { @Override protected void onStoreRelativePathsChanged() { File oldFile = rootFolder.getPath().getCanonicalFile(); Path newPath = config.getStorablePath(oldFile); rootFolder.setPath(newPath); } protected void onWatchFoldersChanged() { LuceneIndex.evtWatchFoldersChanged.fire(TreeIndex.this); } }; // Create root folder rootFile = Util.getCanonicalFile(rootFile); Path newPath = config.getStorablePath(rootFile); rootFolder = createRootFolder(newPath); Util.checkNotNull(rootFolder); // Create index directory or RAM directory created = Util.getTimestamp(); if (indexParentDir == null) { fileIndexDirPath = null; ramIndexDir = new RAMDirectory(); } else { String indexDirName = getIndexDirName(rootFile) + "_" + created; System.out.println("###############indexDirName################"); System.out.println(indexDirName); File indexDir = new File(indexParentDir, indexDirName); if (AppUtil.isPortable()) fileIndexDirPath = new Path(UtilModel.getRelativePathIfPossible(indexDir)); else fileIndexDirPath = new Path(indexDir); } }
From source file:net.sourceforge.docfetcher.model.TreeIndex.java
License:Open Source License
@NotNull public final Directory getLuceneDir() throws IOException { if (fileIndexDirPath != null) { assert ramIndexDir == null; return FSDirectory.open(getIndexDirPath().getCanonicalFile()); }/*from www .j ava2 s . c o m*/ if (ramIndexDir == null) // may be null after deserialization ramIndexDir = new RAMDirectory(); return ramIndexDir; }
From source file:net.sourceforge.docfetcher.model.TreeIndex.java
License:Open Source License
private void clear(boolean removeTopLevel) { if (fileIndexDirPath != null) { File fileIndexDir = getIndexDirPath().getCanonicalFile(); if (fileIndexDir.exists()) { try { if (removeTopLevel) Util.deleteRecursively(fileIndexDir); else Util.deleteContents(fileIndexDir); } catch (IOException e) { Util.printErr(e); }/*from w w w. j a va 2 s . c om*/ } } else { assert ramIndexDir != null; ramIndexDir = new RAMDirectory(); } /* * The last-modified field of the root folder must be cleared so that * the next index update will detect the root folder as modified. */ rootFolder.setLastModified(null); rootFolder.removeChildren(); }
From source file:net.sourceforge.vaticanfetcher.model.search.HighlightServiceTest.java
License:Open Source License
@SuppressWarnings("unchecked") @Test//from w w w . ja v a 2 s .c o m public void testPhraseHighlighter() throws Exception { // Create index Directory directory = new RAMDirectory(); Analyzer analyzer = new StandardAnalyzer(IndexRegistry.LUCENE_VERSION, Collections.EMPTY_SET); IndexWriterAdapter writer = new IndexWriterAdapter(directory); Document doc = new Document(); doc.add(new Field("content", "some text", Store.NO, Index.ANALYZED, TermVector.WITH_POSITIONS_OFFSETS)); writer.add(doc); Closeables.closeQuietly(writer); // flush unwritten documents into index // Perform phrase search QueryParser queryParser = new QueryParser(IndexRegistry.LUCENE_VERSION, "content", analyzer); Query query = queryParser.parse("\"text\""); FastVectorHighlighter highlighter = new FastVectorHighlighter(true, true, null, null); FieldQuery fieldQuery = highlighter.getFieldQuery(query); IndexSearcher searcher = new IndexSearcher(directory); TopDocs docs = searcher.search(query, 10); assertEquals(1, docs.scoreDocs.length); int docId = docs.scoreDocs[0].doc; // Get phrase highlighting offsets FieldTermStack fieldTermStack = new FieldTermStack(searcher.getIndexReader(), docId, "content", fieldQuery); FieldPhraseList fieldPhraseList = new FieldPhraseList(fieldTermStack, fieldQuery); java.lang.reflect.Field field = fieldPhraseList.getClass().getDeclaredField("phraseList"); field.setAccessible(true); LinkedList<WeightedPhraseInfo> list = (LinkedList<WeightedPhraseInfo>) field.get(fieldPhraseList); assertEquals(5, list.get(0).getStartOffset()); assertEquals(9, list.get(0).getEndOffset()); }
From source file:net.sourceforge.vaticanfetcher.model.TreeIndex.java
License:Open Source License
protected TreeIndex(@Nullable File indexParentDir, @NotNull File rootFile) { Util.checkNotNull(rootFile);/*ww w . ja v a2 s. co m*/ this.indexParentDir = indexParentDir; // Create config this.config = new IndexingConfig() { @Override protected void onStoreRelativePathsChanged() { File oldFile = rootFolder.getPath().getCanonicalFile(); Path newPath = config.getStorablePath(oldFile); rootFolder.setPath(newPath); } protected void onWatchFoldersChanged() { LuceneIndex.evtWatchFoldersChanged.fire(TreeIndex.this); } }; // Create root folder rootFile = Util.getCanonicalFile(rootFile); Path newPath = config.getStorablePath(rootFile); rootFolder = createRootFolder(newPath); Util.checkNotNull(rootFolder); // Create index directory or RAM directory created = Util.getTimestamp(); if (indexParentDir == null) { fileIndexDirPath = null; ramIndexDir = new RAMDirectory(); } else { String indexDirName = getIndexDirName(rootFile) + "_" + created; File indexDir = new File(indexParentDir, indexDirName); if (AppUtil.isPortable()) fileIndexDirPath = new Path(UtilModel.getRelativePathIfPossible(indexDir)); else fileIndexDirPath = new Path(indexDir); } }
From source file:net.sourceforge.vaticanfetcher.model.TreeIndex.java
License:Open Source License
private void clear(boolean removeTopLevel) { if (fileIndexDirPath != null) { File fileIndexDir = getIndexDirPath().getCanonicalFile(); if (fileIndexDir.exists()) { try { if (removeTopLevel) Util.deleteRecursively(fileIndexDir); else Util.deleteContents(fileIndexDir); } catch (IOException e) { Util.printErr(e); }/*from w w w. j a va 2 s. co m*/ } } else { assert ramIndexDir != null; ramIndexDir = new RAMDirectory(); } /* The last-modified field of the root folder must be cleared so that the next index update will detect the root folder as modified. */ rootFolder.setLastModified(null); rootFolder.removeChildren(); }
From source file:net.techest.railgun.index.Index.java
License:Apache License
/** * * @param indexdir//from w ww . j a va2s . com * @param readMode * @throws IOException */ public Index(String indexdir, boolean readMode) throws IOException { fsDir = new SimpleFSDirectory(new File(indexdir)); // ???? if (readMode) { fsIs = new IndexSearcher(fsDir, true); return; } ramDir = new RAMDirectory(); if (Configure.getSystemConfig().getString("LOADTOMEM", "false").toLowerCase().equals("true")) { ramDir = new RAMDirectory(fsDir); } IKAnalyzer ika = new IKAnalyzer(); IndexWriterConfig fsIwc = new IndexWriterConfig(Version.LUCENE_34, ika); fsIwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND); fsIwc.setWriteLockTimeout(-1); fsIwc.setRAMBufferSizeMB(Configure.getSystemConfig().getInt("INDEX_FS_BUFFER", 16)); IndexWriterConfig ramIwc = new IndexWriterConfig(Version.LUCENE_34, ika); ramIwc.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND); ramIwc.setWriteLockTimeout(-1); ramIwc.setRAMBufferSizeMB(Configure.getSystemConfig().getInt("INDEX_RAM_BUFFER", 128)); ramWriter = new IndexWriter(ramDir, ramIwc); fsWriter = new IndexWriter(fsDir, fsIwc); fsIs = null; ramIs = null; try { fsIs = new IndexSearcher(fsDir, true); } catch (IOException ex) { } try { ramIs = new IndexSearcher(ramDir, true); } catch (IOException ex) { } }
From source file:net.ymate.platform.module.search.Searchs.java
License:Apache License
private synchronized static IndexWriter __doGetOrCreateIndexWriter(String name) { IndexWriter _writer = __WRITER_CACHES.get(name); if (_writer == null) { Version _version = getConfig().getLuceneVersion(); if (_version == null) { _version = Version.LUCENE_46; }/*from ww w . jav a 2 s .c o m*/ Analyzer _analyzer = getConfig().getAnalyzerImpl(); if (_analyzer == null) { _analyzer = new StandardAnalyzer(_version); } IndexWriterConfig _conf = new IndexWriterConfig(_version, _analyzer); double _bufferSize = getConfig().getBufferSize(); _conf.setRAMBufferSizeMB(_bufferSize > 0 ? _bufferSize : 16); try { String _path = getConfig().getDirectoryPath(); Directory _directory = null; if (StringUtils.isBlank(_path)) { _directory = new RAMDirectory(); } else { _directory = FSDirectory.open(new File(_path + "/" + name)); } _writer = new IndexWriter(_directory, _conf); } catch (IOException ex) { _LOG.error("Create IndexWriter [" + name + "] Error:", ex); } __WRITER_CACHES.put(name, _writer); } return _writer; }
From source file:newseman.TestSemanticTaggerIndexing.java
License:Apache License
public void testSemanticTokenFilter() throws IOException, ParseException { String text = "velk svtov revoluce byla velk jnov revoluce " + "s velkou extra jnovou revoluc"; Directory ramdir = new RAMDirectory(); Analyzer analyzer = new TestSemanticAnalyzer(); IndexWriter writer = new IndexWriter(ramdir, new IndexWriterConfig(TEST_VERSION_CURRENT, analyzer)); Document doc = new Document(); Field field1 = newField("foo", text, TextField.TYPE_STORED); Field field2 = newField("foox", text, TextField.TYPE_STORED); doc.add(field1);//from www .j ava 2 s.com doc.add(field2); writer.addDocument(doc); writer.close(); IndexSearcher ram = new IndexSearcher(DirectoryReader.open(ramdir)); QueryParser qp1 = new QueryParser(TEST_VERSION_CURRENT, "foo", analyzer); QueryParser qp2 = new QueryParser(TEST_VERSION_CURRENT, "foox", analyzer); TopDocs hits; hits = ram.search(qp1.parse("foo:XXX"), 10); assertTrue(hits.totalHits == 1); hits = ram.search(qp1.parse("foox:XXX"), 10); assertTrue(hits.totalHits == 0); // currently, each token is tokenized by the qparser // so we don't see them together Query q1 = qp1.parse("\"velk jnov revoluce\""); Query q2 = qp2.parse("\"velk jnov revoluce\""); assertTrue(!q1.equals(q2)); assertTrue(q1 instanceof MultiPhraseQuery); assertTrue(q2 instanceof PhraseQuery); MultiPhraseQuery mq = (MultiPhraseQuery) q1; List<Term[]> ta = mq.getTermArrays(); StringBuffer o = new StringBuffer(); for (int i = 0; i < ta.size(); i++) { for (Term t : ta.get(i)) { o.append(t.toString()); o.append(" "); } o.append("|"); } assertTrue(o.toString() .equals("foo:velk foo:velk jnov revoluce foo:XXX |foo:jnov |foo:revoluce |")); assertTrue(q1.toString().equals("foo:\"(velk velk jnov revoluce XXX) jnov revoluce\"")); assertTrue(q2.toString().equals("foox:\"velk jnov revoluce\"")); Set<Term> terms = new HashSet<Term>(); q1.extractTerms(terms); // extract only the 2nd (semantic) element q1 = qp1.parse("revoluce"); terms = new HashSet<Term>(); q1.extractTerms(terms); Term semQ = (Term) terms.toArray()[1]; String sem = semQ.text(); hits = ram.search(qp1.parse(sem), 10); assertTrue(hits.totalHits == 1); hits = ram.search(qp1.parse(semQ.toString()), 10); assertTrue(hits.totalHits == 1); hits = ram.search(qp2.parse(sem), 10); assertTrue(hits.totalHits == 0); ramdir.close(); }