TypeScript SDK for Turing Semantic Navigation Search API
npm install @viglet/turing-sdkA TypeScript SDK for the Turing Semantic Navigation Search API.
``bash`
npm install @viglet/turing-sdk
typescript
import { TurSNSiteSearchService, TurSNFilterQueryOperator } from '@viglet/turing-sdk';// Initialize the service
const searchService = new TurSNSiteSearchService('http://localhost:2700');
// Perform a basic search
const results = await searchService.search('yourSiteName', {
q: 'search query',
rows: 10,
currentPage: 1,
localeRequest: 'en_US',
});
console.log(results);
`$3
`javascript
const { TurSNSiteSearchService, TurSNFilterQueryOperator } = require('@viglet/turing-sdk');async function example() {
const searchService = new TurSNSiteSearchService('http://locahost:2700');
const results = await searchService.search('sample-site', {
q: 'artificial intelligence',
rows: 10,
currentPage: 1,
fqOperator: TurSNFilterQueryOperator.AND,
localeRequest: 'en_US',
});
console.log('Search results:', results);
}
example().catch(console.error);
`Configuration
$3
`typescript
const searchService = new TurSNSiteSearchService('http://localhost:2700');
`$3
`typescript
import axios from 'axios';const searchService = new TurSNSiteSearchService('http://localhost:2700', {
timeout: 5000,
headers: {
'User-Agent': 'MyApp/1.0'
}
});
`API Methods
$3
####
search(siteName: string, params?: TurSNSearchParams): PromisePerform a GET search request.
`typescript
const results = await searchService.search('sample-site', {
q: 'artificial intelligence',
rows: 20,
currentPage: 1,
sort: 'relevance',
fqOperator: TurSNFilterQueryOperator.AND,
localeRequest: 'en_US',
});
`####
searchPost(siteName: string, postParams: TurSNSitePostParams, params?: TurSNSearchParams): PromisePerform a POST search request with advanced parameters.
`typescript
const results = await searchService.searchPost('sample-site', {
userId: 'user123',
query: 'machine learning',
populateMetrics: true,
targetingRules: ['rule1', 'rule2']
localeRequest: 'en_US',
}, {
rows: 15
});
`####
searchList(siteName: string, params?: TurSNSearchParams): PromiseGet a list of search result identifiers.
`typescript
const resultIds = await searchService.searchList('sample-site', {
q: 'data science',
rows: 50,
localeRequest: 'en_US',
});
`$3
####
getLocales(siteName: string): PromiseGet available locales for a site.
`typescript
const locales = await searchService.getLocales('sample-site');
`####
getLatestSearches(siteName: string, rows?: number, locale?: string, request?: TurSNSearchLatestRequest): PromiseGet latest search queries.
`typescript
const latestSearches = await searchService.getLatestSearches('sample-site', 10, 'en_US');
`Search Parameters
$3
| Parameter | Type | Description |
|-----------|------|-------------|
|
q | string | Search query |
| currentPage | number | Current page number |
| rows | number | Number of results per page |
| sort | string | Sort criteria |
| filterQueriesDefault | string[] | Default filter queries |
| filterQueriesAnd | string[] | AND filter queries |
| filterQueriesOr | string[] | OR filter queries |
| fqOperator | TurSNFilterQueryOperator | Filter query operator |
| fqItemOperator | TurSNFilterQueryOperator | Filter query item operator |
| group | string | Group parameter |
| autoCorrectionDisabled | number | Auto-correction disabled flag |
| localeRequest | string | Requested locale |$3
Extended parameters for POST requests including:
- User targeting and personalization
- Advanced filtering options
- Metrics population settings
Response Types
$3
The main search response containing:
-
pagination: Pagination information
- queryContext: Query context and metadata
- results: Search results with documents
- groups: Result groupings
- widget: Widget configuration$3
Individual search result document with:
-
source: Document source
- elevate: Elevation flag
- metadata: Document metadata
- fields: Document fieldsEnums
$3
-
AND: AND operation
- OR: OR operation
- NONE: No operation$3
-
FIRST: First page
- LAST: Last page
- PREVIOUS: Previous page
- NEXT: Next page
- PAGE: Specific pageError Handling
`typescript
try {
const results = await searchService.search('sample-site', { q: 'test', localeRequest: 'en_US' });
} catch (error) {
if (error.response) {
// Server responded with error status
console.error('API Error:', error.response.status, error.response.data);
} else if (error.request) {
// No response received
console.error('Network Error:', error.message);
} else {
// Other error
console.error('Error:', error.message);
}
}
``This SDK is built with TypeScript and provides full type definitions for all API responses and parameters.
Apache-2.0
Contributions are welcome! Please feel free to submit a Pull Request.