/** * SearchHttpHandler - 语义搜索 HTTP 处理器 * * 提供 /-/search 端点,支持基于向量的语义搜索。 * * 端点: * - GET {path}/-/search?q=... 简单搜索 * - POST {path}/-/search 复杂搜索(支持 filter 等) */ import { HttpHandler } from '@solid/community-server'; import type { HttpHandlerInput } from '@solid/community-server'; import type { CredentialsExtractor, PermissionReader, Authorizer } from '@solid/community-server'; import type { VectorStore } from '../../storage/vector/VectorStore'; import type { EmbeddingService } from '../../ai/service/EmbeddingService'; import type { SparqlEngine } from '../../storage/sparql/SubgraphQueryEngine'; export interface SearchHttpHandlerOptions { sidecarPath?: string; defaultModel?: string; defaultLimit?: number; } export declare class SearchHttpHandler extends HttpHandler { protected readonly logger: import("global-logger-factory").Logger; private readonly vectorStore; private readonly embeddingService; private readonly sparqlEngine; private readonly credentialsExtractor; private readonly permissionReader; private readonly authorizer; private readonly sidecarPath; private readonly defaultModel; private readonly defaultLimit; constructor(vectorStore: VectorStore, embeddingService: EmbeddingService, sparqlEngine: SparqlEngine, credentialsExtractor: CredentialsExtractor, permissionReader: PermissionReader, authorizer: Authorizer, options?: SearchHttpHandlerOptions); canHandle({ request }: HttpHandlerInput): Promise; handle({ request, response }: HttpHandlerInput): Promise; /** * 解析搜索请求 */ private parseSearchRequest; /** * 执行搜索 */ private executeSearch; /** * 获取 AI 凭据 */ private getAiCredential; /** * 将向量 ID 转换回 subject URI * 注意:这是一个简化实现,实际需要维护 ID -> URI 的映射 */ private vectorIdToSubject; private handleError; private authorizeFor; private parseUrl; private readJsonBody; private sendJsonResponse; private sendErrorResponse; private writeOptions; }