@ThreadSafe public abstract class AbstractMemoryIndex extends java.lang.Object implements MemoryIndex
An in memory Lucene index that contains the vendor/product combinations from the CPE (application) identifiers within the NVD CVE data.
This is the last remaining singleton in dependency-check-core; The use of this singleton - while it may not technically be thread-safe (one database used to build this index may not have the same entries as another) the risk of this is currently believed to be small. As this memory index consumes a large amount of memory we will remain using the singleton pattern for now.Constructor and Description |
---|
AbstractMemoryIndex() |
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes the CPE Index.
|
java.lang.String |
explain(org.apache.lucene.search.Query query,
int doc)
Method to explain queries matches.
|
org.apache.lucene.document.Document |
getDocument(int documentId)
Retrieves a document from the Index.
|
protected abstract AbstractMemoryIndex |
instance()
Returns a reference to the instance.
|
boolean |
isOpen()
returns whether or not the index is open.
|
int |
numDocs()
Returns the number of CPE entries stored in the index.
|
void |
open(java.util.Set<Pair<java.lang.String,java.lang.String>> data,
Settings settings)
Creates and loads data into an in memory index.
|
org.apache.lucene.search.Query |
parseQuery(java.lang.String searchString)
Parses the given string into a Lucene Query.
|
protected void |
resetAnalyzers()
Common method to reset the searching analyzers.
|
org.apache.lucene.search.TopDocs |
search(org.apache.lucene.search.Query query,
int maxQueryResults)
Searches the index using the given query.
|
org.apache.lucene.search.TopDocs |
search(java.lang.String searchString,
int maxQueryResults)
Searches the index using the given search string.
|
protected abstract AbstractMemoryIndex instance()
public void open(java.util.Set<Pair<java.lang.String,java.lang.String>> data, Settings settings) throws IndexException
open
in interface MemoryIndex
data
- the CPE datasettings
- a reference to the dependency-check settingsIndexException
- thrown if there is an error creating the indexpublic boolean isOpen()
public void close()
close
in interface java.lang.AutoCloseable
close
in interface MemoryIndex
public org.apache.lucene.search.TopDocs search(java.lang.String searchString, int maxQueryResults) throws org.apache.lucene.queryparser.classic.ParseException, IndexException, java.io.IOException
search
in interface MemoryIndex
searchString
- the query textmaxQueryResults
- the maximum number of documents to returnorg.apache.lucene.queryparser.classic.ParseException
- thrown when the searchString is invalidIndexException
- thrown when there is an internal error resetting
the search analyzerjava.io.IOException
- is thrown if there is an issue with the underlying
Indexpublic org.apache.lucene.search.Query parseQuery(java.lang.String searchString) throws org.apache.lucene.queryparser.classic.ParseException, IndexException
parseQuery
in interface MemoryIndex
searchString
- the search textorg.apache.lucene.queryparser.classic.ParseException
- thrown if the search text cannot be parsedIndexException
- thrown if there is an error resetting the
analyzerspublic org.apache.lucene.search.TopDocs search(org.apache.lucene.search.Query query, int maxQueryResults) throws org.apache.lucene.index.CorruptIndexException, java.io.IOException
search
in interface MemoryIndex
query
- the query used to search the indexmaxQueryResults
- the max number of results to returnorg.apache.lucene.index.CorruptIndexException
- thrown if the Index is corruptjava.io.IOException
- thrown if there is an IOExceptionpublic org.apache.lucene.document.Document getDocument(int documentId) throws java.io.IOException
getDocument
in interface MemoryIndex
documentId
- the id of the document to retrievejava.io.IOException
- thrown if there is an IOExceptionpublic int numDocs()
public java.lang.String explain(org.apache.lucene.search.Query query, int doc) throws java.io.IOException
query
- the query useddoc
- the document matchedjava.io.IOException
- thrown if there is an index errorprotected void resetAnalyzers() throws java.io.IOException
java.io.IOException
- thrown if there is an index errorCopyright© 2012-21 Jeremy Long. All Rights Reserved.