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
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Returns whether the provided literal is accepted by the LuceneIndex to be indexed.protected abstract void
final void
addDocuments
(Resource subject, List<Statement> statements) Add a complete Lucene Document based on these statements.final void
addRemoveStatements
(Collection<Statement> added, Collection<Statement> removed) Add many statements at the same time, remove many statements at the same time.final void
addStatement
(Statement statement) Indexes the specified Statement.protected abstract SearchDocument
protected abstract void
final 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 SearchDocument
getDocument
(String id) protected abstract Iterable
<? extends SearchDocument> getDocuments
(String resourceId) protected Resource
getResource
(SearchDocument document) Returns the Resource corresponding with the specified Document.protected abstract org.locationtech.spatial4j.context.SpatialContext
getSpatialContext
(String property) void
initialize
(Properties parameters) boolean
isGeoField
(String fieldName) Returns true if the given property contains a geometry.boolean
isIndexedTypeStatement
(Statement statement) Returns true if the given statement is a type statement of the right type, seeLuceneSail.INDEXEDTYPES
to use.boolean
is theLuceneSail.INDEXEDTYPES
parameter set for this index.boolean
isTypeStatement
(Statement statement) Returns true if the given statement is a type statement, seeLuceneSail.INDEXEDTYPES
to use.protected abstract BulkUpdater
protected abstract SearchDocument
newDocument
(String id, String resourceId, String context) protected Object
parseLuceneQueryShape
(String property, String value) protected org.locationtech.spatial4j.shape.Shape
parseQueryPoint
(String property, String value) protected org.locationtech.spatial4j.shape.Shape
parseQueryShape
(String property, String value) protected abstract Iterable
<? extends DocumentScore> final void
removeStatement
(Statement statement) Removes the specified Statement from the indexes.This should be called from within a begin-commit-rollbackprotected abstract void
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
-
Field Details
-
maxDocs
protected int maxDocs -
wktFields
-
-
Constructor Details
-
AbstractSearchIndex
public AbstractSearchIndex()
-
-
Method Details
-
initialize
- Specified by:
initialize
in interfaceSearchIndex
- Throws:
Exception
-
getSpatialContext
protected abstract org.locationtech.spatial4j.context.SpatialContext getSpatialContext(String property) -
accept
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:
accept
in interfaceSearchIndex
- Parameters:
literal
- the literal to be accepted- Returns:
- true if the given literal will be indexed by this LuceneIndex
-
isGeoField
Description copied from interface:SearchIndex
Returns true if the given property contains a geometry.- Specified by:
isGeoField
in interfaceSearchIndex
- Parameters:
fieldName
-- Returns:
- boolean
-
isTypeStatement
Description copied from interface:SearchIndex
Returns true if the given statement is a type statement, seeLuceneSail.INDEXEDTYPES
to use. This method should return false ifSearchIndex.isTypeFilteringEnabled()
returns false.- Specified by:
isTypeStatement
in interfaceSearchIndex
- Parameters:
statement
- statement- Returns:
- boolean
-
isTypeFilteringEnabled
public boolean isTypeFilteringEnabled()Description copied from interface:SearchIndex
is theLuceneSail.INDEXEDTYPES
parameter set for this index.- Specified by:
isTypeFilteringEnabled
in interfaceSearchIndex
- Returns:
- boolean
-
isIndexedTypeStatement
Description copied from interface:SearchIndex
Returns true if the given statement is a type statement of the right type, seeLuceneSail.INDEXEDTYPES
to use. This method should return false ifSearchIndex.isTypeFilteringEnabled()
returns false.- Specified by:
isIndexedTypeStatement
in interfaceSearchIndex
- Parameters:
statement
- statement- Returns:
- boolean
-
getIndexedTypeMapping
- Specified by:
getIndexedTypeMapping
in interfaceSearchIndex
- Returns:
- the accepted types for a particular predicate map (predicate -> [objects])
-
addStatement
Indexes the specified Statement.- Specified by:
addStatement
in interfaceSearchIndex
- Parameters:
statement
-- Throws:
IOException
-
removeStatement
Description copied from interface:SearchIndex
Removes the specified Statement from the indexes.This should be called from within a begin-commit-rollbackblock.
- Specified by:
removeStatement
in interfaceSearchIndex
- Parameters:
statement
-- 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:
addRemoveStatements
in interfaceSearchIndex
- Parameters:
added
- all added statements, can have multiple subjectsremoved
- all removed statements, can have multiple subjects- Throws:
IOException
-
addDocuments
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:
addDocuments
in interfaceSearchIndex
- Parameters:
subject
-statements
- the statements that make up the resource- Throws:
IOException
-
evaluate
- Specified by:
evaluate
in interfaceSearchIndex
- Throws:
SailException
-
parseLuceneQueryShape
protected Object parseLuceneQueryShape(String property, String value) throws ParseException, IOException - Throws:
ParseException
IOException
-
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
Returns the Resource corresponding with the specified Document. -
getDocument
- Throws:
IOException
-
getDocuments
protected abstract Iterable<? extends SearchDocument> getDocuments(String resourceId) throws IOException - Throws:
IOException
-
newDocument
-
copyDocument
-
addDocument
- Throws:
IOException
-
updateDocument
- Throws:
IOException
-
deleteDocument
- Throws:
IOException
-
query
protected abstract Iterable<? extends DocumentScore> query(Resource subject, QuerySpec param) throws MalformedQueryException, IOException - Throws:
MalformedQueryException
IOException
-
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:
MalformedQueryException
IOException
-
geoRelationQuery
protected abstract Iterable<? extends DocumentResult> geoRelationQuery(String relation, IRI geoProperty, String wkt, Var context) throws MalformedQueryException, IOException - Throws:
MalformedQueryException
IOException
-
newBulkUpdate
-