Package org.eclipse.rdf4j.sail.lucene
Class AbstractSearchIndex
- java.lang.Object
-
- org.eclipse.rdf4j.sail.lucene.AbstractSearchIndex
-
- All Implemented Interfaces:
SearchIndex
- Direct Known Subclasses:
AbstractLuceneIndex,ElasticsearchIndex,SolrIndex
public abstract class AbstractSearchIndex extends Object implements SearchIndex
-
-
Constructor Summary
Constructors Constructor Description AbstractSearchIndex()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description booleanaccept(Literal literal)Returns whether the provided literal is accepted by the LuceneIndex to be indexed.protected abstract voidaddDocument(SearchDocument doc)voidaddDocuments(Resource subject, List<Statement> statements)Add a complete Lucene Document based on these statements.voidaddRemoveStatements(Collection<Statement> added, Collection<Statement> removed)Add many statements at the same time, remove many statements at the same time.voidaddStatement(Statement statement)Indexes the specified Statement.protected abstract SearchDocumentcopyDocument(SearchDocument doc)protected abstract voiddeleteDocument(SearchDocument doc)Collection<BindingSet>evaluate(SearchQueryEvaluator evaluator)protected abstract Iterable<? extends DocumentDistance>geoQuery(IRI geoProperty, org.locationtech.spatial4j.shape.Point p, IRI units, double distance, String distanceVar, Var context)protected abstract Iterable<? extends DocumentResult>geoRelationQuery(String relation, IRI geoProperty, String wkt, Var context)protected abstract SearchDocumentgetDocument(String id)protected abstract Iterable<? extends SearchDocument>getDocuments(String resourceId)Map<IRI,Set<IRI>>getIndexedTypeMapping()protected ResourcegetResource(SearchDocument document)Returns the Resource corresponding with the specified Document.protected abstract org.locationtech.spatial4j.context.SpatialContextgetSpatialContext(String property)voidinitialize(Properties parameters)booleanisGeoField(String fieldName)Returns true if the given property contains a geometry.booleanisIndexedTypeStatement(Statement statement)Returns true if the given statement is a type statement of the right type, seeLuceneSail.INDEXEDTYPESto use.booleanisTypeFilteringEnabled()is theLuceneSail.INDEXEDTYPESparameter set for this index.booleanisTypeStatement(Statement statement)Returns true if the given statement is a type statement, seeLuceneSail.INDEXEDTYPESto use.protected abstract BulkUpdaternewBulkUpdate()protected abstract SearchDocumentnewDocument(String id, String resourceId, String context)protected ObjectparseLuceneQueryShape(String property, String value)protected org.locationtech.spatial4j.shape.ShapeparseQueryPoint(String property, String value)protected org.locationtech.spatial4j.shape.ShapeparseQueryShape(String property, String value)protected abstract Iterable<? extends DocumentScore>query(Resource subject, String q, IRI property, boolean highlight)voidremoveStatement(Statement statement)Removes the specified Statement from the indexes.This should be called from within a begin-commit-rollback block.protected abstract voidupdateDocument(SearchDocument doc)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.rdf4j.sail.lucene.SearchIndex
begin, clear, clearContexts, commit, rollback, shutDown
-
-
-
-
Method Detail
-
initialize
public void initialize(Properties parameters) throws Exception
- Specified by:
initializein interfaceSearchIndex- Throws:
Exception
-
getSpatialContext
protected abstract org.locationtech.spatial4j.context.SpatialContext getSpatialContext(String property)
-
accept
public boolean accept(Literal literal)
Returns whether the provided literal is accepted by the LuceneIndex to be indexed. It for instance does not make much since to index xsd:float.- Specified by:
acceptin interfaceSearchIndex- Parameters:
literal- the literal to be accepted- Returns:
- true if the given literal will be indexed by this LuceneIndex
-
isGeoField
public boolean isGeoField(String fieldName)
Description copied from interface:SearchIndexReturns true if the given property contains a geometry.- Specified by:
isGeoFieldin interfaceSearchIndex- Returns:
- boolean
-
isTypeStatement
public boolean isTypeStatement(Statement statement)
Description copied from interface:SearchIndexReturns true if the given statement is a type statement, seeLuceneSail.INDEXEDTYPESto use. This method should return false ifSearchIndex.isTypeFilteringEnabled()returns false.- Specified by:
isTypeStatementin interfaceSearchIndex- Parameters:
statement- statement- Returns:
- boolean
-
isTypeFilteringEnabled
public boolean isTypeFilteringEnabled()
Description copied from interface:SearchIndexis theLuceneSail.INDEXEDTYPESparameter set for this index.- Specified by:
isTypeFilteringEnabledin interfaceSearchIndex- Returns:
- boolean
-
isIndexedTypeStatement
public boolean isIndexedTypeStatement(Statement statement)
Description copied from interface:SearchIndexReturns true if the given statement is a type statement of the right type, seeLuceneSail.INDEXEDTYPESto use. This method should return false ifSearchIndex.isTypeFilteringEnabled()returns false.- Specified by:
isIndexedTypeStatementin interfaceSearchIndex- Parameters:
statement- statement- Returns:
- boolean
-
getIndexedTypeMapping
public Map<IRI,Set<IRI>> getIndexedTypeMapping()
- Specified by:
getIndexedTypeMappingin interfaceSearchIndex- Returns:
- the accepted types for a particular predicate map (predicate -> [objects])
-
addStatement
public final void addStatement(Statement statement) throws IOException
Indexes the specified Statement.- Specified by:
addStatementin interfaceSearchIndex- Throws:
IOException
-
removeStatement
public final void removeStatement(Statement statement) throws IOException
Description copied from interface:SearchIndexRemoves the specified Statement from the indexes.This should be called from within a begin-commit-rollback block.- Specified by:
removeStatementin interfaceSearchIndex- Throws:
IOException
-
addRemoveStatements
public final void addRemoveStatements(Collection<Statement> added, Collection<Statement> removed) throws IOException
Add many statements at the same time, remove many statements at the same time. Ordering by resource has to be done inside this method. The passed added/removed sets are disjunct, no statement can be in both- Specified by:
addRemoveStatementsin interfaceSearchIndex- Parameters:
added- all added statements, can have multiple subjectsremoved- all removed statements, can have multiple subjects- Throws:
IOException
-
addDocuments
public final void addDocuments(Resource subject, List<Statement> statements) throws IOException
Add a complete Lucene Document based on these statements. Do not search for an existing document with the same subject id. (assume the existing document was deleted)- Specified by:
addDocumentsin interfaceSearchIndex- Parameters:
statements- the statements that make up the resource- Throws:
IOException
-
evaluate
public final Collection<BindingSet> evaluate(SearchQueryEvaluator evaluator) throws SailException
- Specified by:
evaluatein interfaceSearchIndex- Throws:
SailException
-
parseLuceneQueryShape
protected Object parseLuceneQueryShape(String property, String value) throws ParseException, IOException
- Throws:
ParseExceptionIOException
-
parseQueryShape
protected org.locationtech.spatial4j.shape.Shape parseQueryShape(String property, String value) throws ParseException
- Throws:
ParseException
-
parseQueryPoint
protected org.locationtech.spatial4j.shape.Shape parseQueryPoint(String property, String value) throws ParseException
- Throws:
ParseException
-
getResource
protected Resource getResource(SearchDocument document)
Returns the Resource corresponding with the specified Document.
-
getDocument
protected abstract SearchDocument getDocument(String id) throws IOException
- Throws:
IOException
-
getDocuments
protected abstract Iterable<? extends SearchDocument> getDocuments(String resourceId) throws IOException
- Throws:
IOException
-
newDocument
protected abstract SearchDocument newDocument(String id, String resourceId, String context)
-
copyDocument
protected abstract SearchDocument copyDocument(SearchDocument doc)
-
addDocument
protected abstract void addDocument(SearchDocument doc) throws IOException
- Throws:
IOException
-
updateDocument
protected abstract void updateDocument(SearchDocument doc) throws IOException
- Throws:
IOException
-
deleteDocument
protected abstract void deleteDocument(SearchDocument doc) throws IOException
- Throws:
IOException
-
query
protected abstract Iterable<? extends DocumentScore> query(Resource subject, String q, IRI property, boolean highlight) throws MalformedQueryException, IOException
- Throws:
MalformedQueryExceptionIOException
-
geoQuery
protected abstract Iterable<? extends DocumentDistance> geoQuery(IRI geoProperty, org.locationtech.spatial4j.shape.Point p, IRI units, double distance, String distanceVar, Var context) throws MalformedQueryException, IOException
- Throws:
MalformedQueryExceptionIOException
-
geoRelationQuery
protected abstract Iterable<? extends DocumentResult> geoRelationQuery(String relation, IRI geoProperty, String wkt, Var context) throws MalformedQueryException, IOException
- Throws:
MalformedQueryExceptionIOException
-
newBulkUpdate
protected abstract BulkUpdater newBulkUpdate()
-
-