use of gate.creole.annic.lucene.LuceneSearcher in project gate-core by GateNLP.
the class LuceneDataStoreImpl method open.
// close()
/**
* Open a connection to the data store.
*/
@Override
public void open() throws PersistenceException {
super.open();
/*
* check if the storage directory is a valid serial datastore if we
* want to support old style: String versionInVersionFile = "1.0";
* (but this means it will open *any* directory)
*/
BufferedReader isr = null;
try {
isr = new BufferedReader(new FileReader(getVersionFile()));
currentProtocolVersion = isr.readLine();
String indexDirRelativePath = isr.readLine();
if (indexDirRelativePath != null && indexDirRelativePath.trim().length() > 1) {
URL storageDirURL = storageDir.toURI().toURL();
URL theIndexURL = new URL(storageDirURL, indexDirRelativePath);
// check if index directory exists
File indexDir = Files.fileFromURL(theIndexURL);
if (!indexDir.exists()) {
throw new PersistenceException("Index directory " + indexDirRelativePath + " could not be found for datastore at " + storageDirURL);
}
indexURL = theIndexURL;
this.indexer = new LuceneIndexer(indexURL);
this.searcher = new LuceneSearcher();
((LuceneSearcher) this.searcher).setLuceneDatastore(this);
}
} catch (IOException e) {
throw new PersistenceException("Invalid storage directory: " + e);
} finally {
IOUtils.closeQuietly(isr);
}
if (!isValidProtocolVersion(currentProtocolVersion))
throw new PersistenceException("Invalid protocol version number: " + currentProtocolVersion);
// Lets create a separate indexer thread which keeps running in the
// background
executor = new ScheduledThreadPoolExecutor(1, Executors.defaultThreadFactory());
// set up the executor so it does not execute delayed indexing tasks
// that are still waiting when it is shut down. We run these tasks
// immediately at shutdown time rather than waiting.
executor.setContinueExistingPeriodicTasksAfterShutdownPolicy(false);
executor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
// start listening to Creole events
Gate.getCreoleRegister().addCreoleListener(this);
}
use of gate.creole.annic.lucene.LuceneSearcher in project gate-core by GateNLP.
the class TestAnnic method testSearcher.
/**
* Testing annic searching functionalities.
*
* @throws Exception
*/
public void testSearcher() throws Exception {
LuceneSearcher searcher = new LuceneSearcher();
Map<String, Object> parameters = new HashMap<String, Object>();
List<String> indexLocations = new ArrayList<String>();
indexLocations.add(indexURL.getAbsolutePath());
parameters.put(Constants.INDEX_LOCATIONS, indexLocations);
parameters.put(Constants.CONTEXT_WINDOW, new Integer(5));
String query = "{Person}";
@SuppressWarnings("unused") boolean success = searcher.search(query, parameters);
int noOfHits = searcher.next(-1).length;
assertEquals(12, noOfHits);
query = "{Organization}({Token})*3{Person}";
success = searcher.search(query, parameters);
noOfHits = searcher.next(-1).length;
assertEquals(noOfHits, 0);
query = "{Organization}({Token})*3 (\"up\" | \"down\") ({Token})*3 ({Money} | {Percent})";
success = searcher.search(query, parameters);
Hit[] toExport = searcher.next(-1);
assertEquals(toExport.length, 0);
String xmlRepresentation = Parser.toXML(toExport);
// and then read it back
toExport = Parser.fromXML(xmlRepresentation);
xmlRepresentation = Parser.toXML(toExport);
}
Aggregations