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: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();
}