Cultiva IA — Base de Conocimiento
212 recursos · Búsqueda full-text + vectorial con Orama
Powered by Orama
Recursos
Skills
Casos de uso
8 resultados 0.08ms

src/search/cultivaia-search.ts
// Cultiva IA — Motor de búsqueda con Orama
// Sin servidor, sin costes, sub-milisegundo
import { create, insert, search } from "@orama/orama";

// 1. Esquema optimizado para la base de conocimiento
const db = await create({
  schema: {
    titulo:     "string",       // Buscable
    descripcion:"string",       // Buscable
    categoria:  "enum",         // Filtro exacto (más rápido)
    nivel:      "enum",         // basico | intermedio | avanzado
    tipo:       "enum",         // guia | referencia | plantilla
    tags:       "string[]",     // Array buscable
    updatedAt:  "number",       // Unix timestamp para rango
    views:      "number",       // Para ordenar por popularidad
  }
});

// 2. Insertar recursos (build-time, se serializa a JSON)
await insert(db, {
  titulo:      "Orama — Motor de Búsqueda Full-Text y Vectorial",
  descripcion: "Implementa búsqueda sin infraestructura externa. Typo-tolerance, facetas, híbrida.",
  categoria:   "Web",
  nivel:       "intermedio",
  tipo:        "referencia",
  tags:        ["orama", "busqueda", "vectorial", "typescript"],
  views:       1420
});

// 3. Búsqueda con typo-tolerance y facetas
const resultados = await search(db, {
  term:       "busqueda vectoral",  // typo: "vectoral" → "vectorial"
  properties: ["titulo", "descripcion", "tags"],
  where: {
    categoria: { eq: "Web" },
    nivel:     { eq: "intermedio" }
  },
  facets: {
    categoria: { limit: 10 },
    nivel:     { limit: 3  },
    views: { ranges: [
      { from: 0,    to: 100      },
      { from: 100,  to: 1000     },
      { from: 1000, to: Infinity }
    ]}
  },
  sortBy: { property: "views", order: "DESC" },
  limit: 10
});

console.log(`${resultados.count} resultados en ${resultados.elapsed.formatted}`);
// → "8 resultados en 0.08ms"
// Sin servidor. Sin API. 100% client-side.