public class LuceneIndex extends AbstractIndex implements Closeable
The GNU Lesser General Public License for details.
Modifier and Type | Field and Description |
---|---|
private Book |
book
The Book that we are indexing
|
private static Object |
CREATING
A synchronization lock point to prevent us from doing 2 index runs at a
time.
|
private org.apache.lucene.store.Directory |
directory
The Lucene directory for the path.
|
static String |
FIELD_BODY
The Lucene field for the text contents
|
static String |
FIELD_HEADING
The Lucene field for headings
|
static String |
FIELD_INTRO
Combines the strong numbers with the morphology field
|
static String |
FIELD_KEY
The Lucene field for the osisID
|
static String |
FIELD_MORPHOLOGY
Combines the strong numbers with the morphology field
|
static String |
FIELD_NOTE
The Lucene field for the notes
|
static String |
FIELD_STRONG
The Lucene field for the strong numbers
|
static String |
FIELD_XREF
The Lucene field for cross references
|
private static org.slf4j.Logger |
log
The log stream
|
private String |
path
The location of this index
|
private org.apache.lucene.search.Searcher |
searcher
The Lucene search engine
|
private static int |
WORK_ESTIMATE
An estimate of the percent of time spent indexing.
|
Constructor and Description |
---|
LuceneIndex(Book book,
URI storage)
Read an existing index and use it.
|
LuceneIndex(Book book,
URI storage,
IndexPolicy policy)
Generate an index to use, telling the job about progress as you go.
|
Modifier and Type | Method and Description |
---|---|
private void |
addField(org.apache.lucene.document.Document doc,
org.apache.lucene.document.Field field,
String text)
Add the text to the Field and put the Field in the document,
ignoring null and empty text.
|
void |
close()
Closes resources related to the index
|
Key |
find(String search)
Find the set of references that satisfy the query.
|
private void |
generateSearchIndexImpl(Progress job,
List<Key> errors,
org.apache.lucene.index.IndexWriter writer,
Key key,
int count,
IndexPolicy policy)
Dig down into a Key indexing as we go.
|
Key |
getKey(String name)
An index must be able to create KeyLists for users in a similar way to
the Book that it is indexing.
|
org.apache.lucene.search.Searcher |
getSearcher()
Could be null if the index has been closed down.
|
private void |
initDirectoryAndSearcher()
Initializes the directory and searcher.
|
getSearchModifier, setSearchModifier
public static final String FIELD_KEY
public static final String FIELD_BODY
public static final String FIELD_STRONG
public static final String FIELD_HEADING
public static final String FIELD_XREF
public static final String FIELD_NOTE
public static final String FIELD_MORPHOLOGY
public static final String FIELD_INTRO
private static final int WORK_ESTIMATE
private Book book
private String path
private org.apache.lucene.store.Directory directory
private org.apache.lucene.search.Searcher searcher
private static final Object CREATING
private static final org.slf4j.Logger log
public LuceneIndex(Book book, URI storage) throws BookException
book
- the bookstorage
- BookException
- If we fail to read the index filespublic LuceneIndex(Book book, URI storage, IndexPolicy policy) throws BookException
book
- the bookstorage
- policy
- BookException
- If we fail to read the index filesprivate void initDirectoryAndSearcher()
public Key find(String search) throws BookException
Index
query
being searched
for is null then an empty Key MUST be returned. Users of this
index may use this functionality to get empty KeyLists which they then
use to aggregate other searches done on this index.find
in interface Index
search
- The text to search forBookException
public Key getKey(String name) throws NoSuchKeyException
Index
getKey
in interface Index
name
- The string to convert to a KeyNoSuchKeyException
- If the string can not be turned into a KeyKeyFactory.getKey(String)
public final void close()
Index
private void generateSearchIndexImpl(Progress job, List<Key> errors, org.apache.lucene.index.IndexWriter writer, Key key, int count, IndexPolicy policy) throws BookException, IOException
policy
- BookException
IOException
private void addField(org.apache.lucene.document.Document doc, org.apache.lucene.document.Field field, String text)
doc
- The Document to which the Field should be addedfield
- The Field to addtext
- The text for the fieldpublic org.apache.lucene.search.Searcher getSearcher()
IndexManager.closeAllIndexes()
for more information