solrkit
Version:
 
221 lines (220 loc) • 7.76 kB
TypeScript
import { SolrResponse } from './Data';
import { FacetValue } from '../component/facet/FacetTypes';
declare enum UrlParams {
ID = "id",
QUERY = "query",
FQ = "fq",
START = "start",
TYPE = "type",
HL = "highlight",
}
interface SavedSearch {
type?: 'QUERY' | 'MLT' | 'DETAILS';
query?: string;
boost?: string;
sort?: string[];
facets?: {
[key: string]: string[];
};
}
interface SearchParams extends SavedSearch {
start?: number;
}
declare type QueryParam = string | number;
declare type NamespacedUrlParam = [UrlParams, QueryParam];
declare type UrlFragment = [UrlParams | NamespacedUrlParam, QueryParam | [string, QueryParam[]]] | null;
declare class QueryBeingBuilt {
solrUrlFragment: string;
appUrlFragment: UrlFragment;
constructor(solrUrlFragment: string, appUrlFragment: UrlFragment);
}
declare class SolrQueryBuilder<T> {
searchResponse?: SolrResponse<T>;
previous?: SolrQueryBuilder<T>;
op: () => QueryBeingBuilt;
constructor(op: () => QueryBeingBuilt, previous?: SolrQueryBuilder<T>);
get(id: QueryParam): SolrQueryBuilder<T>;
select(): SolrQueryBuilder<T>;
moreLikeThis(handler: string, col: string, id: QueryParam, props: MoreLikeThisProps): SolrQueryBuilder<T>;
start(start: number): SolrQueryBuilder<T>;
jsonp(callback: string): SolrQueryBuilder<T>;
export(): SolrQueryBuilder<T>;
qt(qt: string): SolrQueryBuilder<T>;
q(searchFields: string[], value: QueryParam): SolrQueryBuilder<T>;
bq(query: string): SolrQueryBuilder<T>;
fq(field: string, values: QueryParam[]): SolrQueryBuilder<T>;
highlight(query: HighlightQuery): SolrQueryBuilder<T> | null;
fl(fields: QueryParam[]): SolrQueryBuilder<T>;
requestFacet(field: string): SolrQueryBuilder<T>;
rows(rows: number): SolrQueryBuilder<T>;
sort(fields: string[]): SolrQueryBuilder<T>;
schema(): SolrQueryBuilder<T>;
construct(): [string, Array<UrlFragment>];
buildCurrentParameters(): SearchParams;
buildSolrUrl(): string;
}
interface PaginationData {
numFound: number;
start: number;
pageSize: number;
}
declare type QueryEvent<T> = (object: T[], paging: PaginationData) => void;
declare type FacetEvent = (object: FacetValue[]) => void;
declare type ErrorEvent = (error: object) => void;
declare type GetEvent<T> = (object: T) => void;
declare type MoreLikeThisEvent<T> = (object: T[]) => void;
interface SolrGet<T> {
doGet: (id: string | number) => void;
onGet: (cb: GetEvent<T>) => void;
}
interface SolrUpdate {
doUpdate: (id: string | number, attr: string, value: string) => void;
}
interface SolrQuery<T> {
doQuery: (q: GenericSolrQuery) => void;
doExport: (q: GenericSolrQuery) => void;
onQuery: (cb: QueryEvent<T>) => void;
registerFacet: (facet: string[]) => (cb: FacetEvent) => void;
refine: (q: GenericSolrQuery) => SolrQuery<T>;
}
interface SolrHighlight<T> {
onHighlight: (cb: QueryEvent<T>) => void;
}
interface SolrMoreLikeThis<T> {
doMoreLikeThis: (id: string | number, props: MoreLikeThisProps) => void;
onMoreLikeThis: (cb: MoreLikeThisEvent<T>) => void;
}
interface SolrTransitions {
clearEvents: () => void;
getCoreConfig: () => SolrConfig;
getNamespace: () => string;
getCurrentParameters: () => SearchParams;
stateTransition: (v: SearchParams) => void;
}
declare type SolrSchemaFieldDefinition = {
type: string;
schema: string;
dynamicBase: string;
docs: number;
};
declare type SolrSchemaDefinition = {
responseHeader: {
status: number;
QTime: number;
};
index: {
numDocs: number;
maxDoc: number;
deletedDocs: number;
indexHeapUsageBytes: number;
version: number;
segmentCount: number;
current: boolean;
hasDeletions: boolean;
directory: string;
segmentsFile: string;
segmentsFileSizeInBytes: number;
userData: {
commitTimeMSec: string;
commitCommandVer: string;
};
lastModified: string;
};
fields: {
[key: string]: SolrSchemaFieldDefinition;
};
info: object;
};
interface SolrSchema {
getSchema: () => SolrSchemaDefinition;
}
interface GenericSolrQuery {
query: string;
boost?: string;
sort?: string[];
rows?: number;
}
interface HighlightQuery {
method?: 'unified' | 'original' | 'fastVector' | 'postings';
fields: string[];
query?: string;
qparser?: string;
requireFieldMatch?: boolean;
usePhraseHighlighter?: boolean;
highlightMultiTerm?: boolean;
snippets?: number;
fragsize?: number;
pre?: string;
post?: string;
encoder?: string;
maxAnalyzedChars?: number;
}
interface SolrConfig {
url: string;
core: string;
primaryKey: string;
defaultSearchFields: string[];
fields: string[];
pageSize: number;
prefix: string;
fq?: [string, string];
qt?: string;
}
interface MoreLikeThisProps {
fl: string[];
mintf: number;
mindf: number;
maxdf: number;
minwl: number;
maxwl: number;
maxqt: number;
maxntp: number;
boost: number;
qf: string[];
}
declare class SolrCore<T> implements SolrTransitions {
solrConfig: SolrConfig;
private events;
private currentParameters;
private query?;
private getCache;
private mltCache;
private refinements;
constructor(solrConfig: SolrConfig);
clearEvents(): void;
getCoreConfig(): SolrConfig;
onQuery(op: QueryEvent<T>): void;
refine(query: GenericSolrQuery): SolrCore<T>;
registerFacet(facetNames: string[]): (cb: FacetEvent) => void;
onError(op: ErrorEvent): void;
doMoreLikeThis(id: string | number, mltProps: MoreLikeThisProps): void;
getNamespace(): string;
prefetchMoreLikeThis(id: string | number, mltProps: MoreLikeThisProps, prefetch: boolean): void;
onMoreLikeThis(op: (v: T[]) => void): void;
onGet(op: GetEvent<T>): void;
doGet(id: string | number): void;
doQuery(desiredQuery: GenericSolrQuery, cb?: (qb: SolrQueryBuilder<{}>) => SolrQueryBuilder<{}>): void;
doUpdate(id: string | number, attr: string, value: string): void;
doExport(): void;
next(op: (event: SolrQueryBuilder<T>) => SolrQueryBuilder<T>): void;
stateTransition(newState: SearchParams): void;
getCurrentParameters(): SearchParams;
}
declare class DataStore {
cores: {
[keys: string]: SolrCore<object>;
};
clearEvents(): void;
registerCore<T extends object>(config: SolrConfig): SolrCore<T>;
}
declare class AutoConfiguredDataStore extends DataStore {
private core;
private facets;
private fields;
getCore(): SolrCore<object> & SolrGet<object> & SolrQuery<object>;
getFacets(): string[];
getFields(): string[];
autoconfigure<T extends object>(config: SolrConfig, complete: () => void, useFacet: (facet: string) => boolean): void;
}
declare type SingleComponent<T> = (data: T, index?: number) => object | null | undefined;
export { MoreLikeThisProps, ErrorEvent, UrlParams, QueryParam, HighlightQuery, NamespacedUrlParam, UrlFragment, PaginationData, SavedSearch, SearchParams, QueryBeingBuilt, SolrQueryBuilder, SingleComponent, MoreLikeThisEvent, GetEvent, GenericSolrQuery, QueryEvent, FacetEvent, SolrConfig, SolrGet, SolrUpdate, SolrMoreLikeThis, SolrQuery, SolrHighlight, SolrTransitions, SolrCore, SolrSchemaFieldDefinition, SolrSchemaDefinition, SolrSchema, DataStore, AutoConfiguredDataStore };