You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudreve/pkg/searcher/indexer.go

52 lines
1.6 KiB

package searcher
import (
"context"
"io"
)
type SearchDocument struct {
ID string `json:"id"`
FileID int `json:"file_id"`
OwnerID int `json:"owner_id"`
EntityID int `json:"entity_id"`
ChunkIdx int `json:"chunk_idx"`
FileName string `json:"file_name"`
Text string `json:"text"`
Formated *FormatedHit `json:"_formatted,omitempty"`
}
type FormatedHit struct {
Text string `json:"text"`
}
type SearchResult struct {
FileID int `json:"file_id"`
OwnerID int `json:"owner_id"`
EntityID int `json:"entity_id"`
FileName string `json:"file_name"`
Text string `json:"text"`
}
type SearchIndexer interface {
IndexFile(ctx context.Context, ownerID, fileID, entityID int, fileName, text string) error
DeleteByFileIDs(ctx context.Context, fileID ...int) error
ChangeOwner(ctx context.Context, fileID, oldOwnerID, newOwnerID int) error
CopyByFileID(ctx context.Context, srcFileID, dstFileID, dstOwnerID, dstEntityID int) error
Rename(ctx context.Context, fileID, entityID int, newFileName string) error
Search(ctx context.Context, ownerID int, query string, offset int) ([]SearchResult, int64, error)
// IndexReady reports whether the search index exists and has the required
// configuration (filterable/searchable attributes, etc.).
IndexReady(ctx context.Context) (bool, error)
EnsureIndex(ctx context.Context) error
// DeleteAll removes all documents from the index.
DeleteAll(ctx context.Context) error
Close() error
}
type TextExtractor interface {
Exts() []string
MaxFileSize() int64
Extract(ctx context.Context, reader io.Reader) (string, error)
}