001/* 002 * Licensed to DuraSpace under one or more contributor license agreements. 003 * See the NOTICE file distributed with this work for additional information 004 * regarding copyright ownership. 005 * 006 * DuraSpace licenses this file to you under the Apache License, 007 * Version 2.0 (the "License"); you may not use this file except in 008 * compliance with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.fcrepo.search.api; 019 020import org.fcrepo.kernel.api.identifiers.FedoraId; 021import org.fcrepo.kernel.api.models.ResourceHeaders; 022 023/** 024 * An interface defining search index management operations 025 * 026 * @author dbernstein 027 */ 028public interface SearchIndex { 029 030 /** 031 * Adds or updates the index with the resource header information. 032 * @param resourceHeaders The resource headers associated with the resource 033 034 */ 035 void addUpdateIndex(ResourceHeaders resourceHeaders); 036 037 /** 038 * Adds or updates the index with the resource header information. 039 * @param dbTxId The database transaction id 040 * @param resourceHeaders The resource headers associated with the resource 041 */ 042 void addUpdateIndex(String dbTxId, ResourceHeaders resourceHeaders); 043 044 /** 045 * Removes indexed fields associated with the specified Fedora ID 046 * @param fedoraId The Fedora ID 047 */ 048 void removeFromIndex(FedoraId fedoraId); 049 050 /** 051 * Performs a search based on the parameters and returns the result. 052 * 053 * @param parameters The parameters defining the search 054 * @return The result of the search 055 */ 056 SearchResult doSearch(SearchParameters parameters) throws InvalidQueryException; 057 058 059 /** 060 * Remove all persistent state associated with the index. 061 */ 062 void reset(); 063}