Package org.eclipse.rdf4j.sail.lucene

## Interface SearchIndex

- All Known Implementing Classes:
    `AbstractLuceneIndex`, `AbstractSearchIndex`, `ElasticsearchIndex`, `LuceneIndex`, `LuceneIndexNIOFS`, `SolrIndex`

      public interface SearchIndex

  A SearchIndex is a one-stop-shop abstraction of a Lucene index. It takes care of proper synchronization of IndexReaders, IndexWriters and IndexSearchers in a way that is suitable for a LuceneSail.
  See Also:
    `LuceneSail`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `accept​(Literal literal)` | Returns whether the provided literal is accepted by the LuceneIndex to be indexed.
    `void` | `addDocuments​(Resource subject, List<Statement> statements)` | Add a complete Lucene Document based on these statements.Do not search for an existing document with the same subject id.
    `void` | `addRemoveStatements​(Collection<Statement> added, Collection<Statement> removed)` | Add many statements at the same time, remove many statements at the same time.Ordering by resource has to be done inside this method.
    `void` | `addStatement​(Statement statement)` | Indexes the specified Statement.This should be called from within a begin-commit-rollback block.
    `void` | `begin()` | Begins a transaction.
    `void` | `clear()` | Clears the indexes.
    `void` | `clearContexts​(Resource... contexts)` | This should be called from within a begin-commit-rollback block.
    `void` | `commit()` | Commits any changes done to the LuceneIndex since the last commit.The semantics is synchronous to SailConnection.commit(), i.e.
    `Collection<BindingSet>` | `evaluate​(SearchQueryEvaluator query)` |
    `Map<IRI,​Set<IRI>>` | `getIndexedTypeMapping()` |
    `void` | `initialize​(Properties parameters)` |
    `boolean` | `isGeoField​(String propertyName)` | 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, see `LuceneSail.INDEXEDTYPES` to use.
    `boolean` | `isTypeFilteringEnabled()` | is the `LuceneSail.INDEXEDTYPES` parameter set for this index.
    `boolean` | `isTypeStatement​(Statement statement)` | Returns true if the given statement is a type statement, see `LuceneSail.INDEXEDTYPES` to use.
    `void` | `removeStatement​(Statement statement)` | Removes the specified Statement from the indexes.This should be called from within a begin-commit-rollback block.
    `void` | `rollback()` |
    `void` | `shutDown()` |

- - ### Method Detail

    - #### initialize

          void initialize​(Properties parameters)
                   throws Exception

      Throws:
        `Exception`

    - #### evaluate

          Collection<BindingSet> evaluate​(SearchQueryEvaluator query)
                                   throws SailException

      Throws:
        `SailException`

    - #### shutDown

          void shutDown()
                 throws IOException

      Throws:
        `IOException`

    - #### accept

          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.
      Parameters:
        `literal` - the literal to be accepted
      Returns:
        true if the given literal will be indexed by this LuceneIndex

    - #### isGeoField

          boolean isGeoField​(String propertyName)

      Returns true if the given property contains a geometry.
      Parameters:
        `propertyName` -
      Returns:
        boolean

    - #### isTypeStatement

          boolean isTypeStatement​(Statement statement)

      Returns true if the given statement is a type statement, see `LuceneSail.INDEXEDTYPES` to use. This method should return false if `isTypeFilteringEnabled()` returns false.
      Parameters:
        `statement` - statement
      Returns:
        boolean

    - #### isTypeFilteringEnabled

          boolean isTypeFilteringEnabled()

      is the `LuceneSail.INDEXEDTYPES` parameter set for this index.
      Returns:
        boolean

    - #### isIndexedTypeStatement

          boolean isIndexedTypeStatement​(Statement statement)

      Returns true if the given statement is a type statement of the right type, see `LuceneSail.INDEXEDTYPES` to use. This method should return false if `isTypeFilteringEnabled()` returns false.
      Parameters:
        `statement` - statement
      Returns:
        boolean

    - #### getIndexedTypeMapping

          Map<IRI,​Set<IRI>> getIndexedTypeMapping()

      Returns:
        the accepted types for a particular predicate map (predicate -> [objects])

    - #### begin

          void begin()
              throws IOException

      Begins a transaction.
      Throws:
        `IOException`

    - #### commit

          void commit()
               throws IOException

      Commits any changes done to the LuceneIndex since the last commit.The semantics is synchronous to SailConnection.commit(), i.e. the LuceneIndex should be committed/rolled back whenever the LuceneSailConnection is committed/rolled back.
      Throws:
        `IOException`

    - #### rollback

          void rollback()
                 throws IOException

      Throws:
        `IOException`

    - #### addStatement

          void addStatement​(Statement statement)
                     throws IOException

      Indexes the specified Statement.This should be called from within a begin-commit-rollback block.
      Parameters:
        `statement` -
      Throws:
        `IOException`

    - #### removeStatement

          void removeStatement​(Statement statement)
                        throws IOException

      Removes the specified Statement from the indexes.This should be called from within a begin-commit-rollback block.
      Parameters:
        `statement` -
      Throws:
        `IOException`

    - #### addRemoveStatements

          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. This should be called from within a begin-commit-rollback block.
      Parameters:
        `added` - all added statements, can have multiple subjects
        `removed` - all removed statements, can have multiple subjects
      Throws:
        `IOException`

    - #### clearContexts

          void clearContexts​(Resource... contexts)
                      throws IOException

      This should be called from within a begin-commit-rollback block.
      Parameters:
        `contexts` -
      Throws:
        `IOException`

    - #### addDocuments

          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). This should be called from within a begin-commit-rollback block.
      Parameters:
        `subject` -
        `statements` - the statements that make up the resource
      Throws:
        `IOException`

    - #### clear

          void clear()
              throws IOException

      Clears the indexes.
      Throws:
        `IOException`