Salta ai contenuti

Motori di ricerca

Guida offre due integrazioni di ricerca distinte. Per indicizzazione locale nello spazio di lavoro, senza configurazione, puoi usare l’indice Lucene.NET integrato. Per grandi volumi e integrazione esterna, puoi collegarti direttamente a cluster Elasticsearch.


g.search.* fornisce un indice di ricerca testuale legato allo spazio di lavoro, basato su Lucene.NET. Non richiede configurazione, gira interamente in locale e salva i dati nella cartella dello spazio di lavoro (.guida/search-index/).

Casi d’uso:

  • Indicizzare testo estratto da centinaia di pagine per recuperarlo rapidamente.
  • Costruire basi di conoscenza locali per Retrieval-Augmented Generation (RAG) con LLM.
  • Trovare elementi in coda o documenti salvati tramite ricerca di prossimità.
async function main() {
// Indicizza un documento
g.search.index({
_key: "article-123",
_collection: "articles",
title: "Capire l'automazione del browser",
body: "Guida è un browser controllabile da agenti...",
url: "https://example.com/article"
});
// Interroga con la sintassi Lucene standard
// Supporta caratteri jolly, ricerca di prossimità (~) e query specifiche per campo
const results = g.search.query("title:browser* OR body:automazione~");
g.log(`Trovate ${results.length} corrispondenze:`);
for (const r of results) {
g.log(`- ${r.fields.title} (Punteggio: ${r.score})`);
}
}

6 metodi in totale: vedi il Riferimento API per l’elenco completo.


g.elasticsearch.* si collega a cluster Elasticsearch per ingestione ad alta velocità, gestione degli indici e ricerche raw Query DSL.

A differenza dell’indice Lucene locale, Elasticsearch richiede un cluster esterno, in esecuzione localmente, tramite Docker o su Elastic Cloud.

Formato della stringa di connessione (JSON):

Le connessioni vengono configurate in sicurezza nel pannello Credenziali di accesso (Secrets) tramite il dialogo Aggiungi Elasticsearch (Add Elasticsearch). Internamente, questo salva una configurazione JSON:

{
"url": "http://localhost:9200",
"username": "elastic",
"password": "password"
}

Casi d’uso:

  • Estrarre dataset molto grandi e inserirli usando operazioni in blocco ad alta velocità.
  • Creare e gestire indici in modo programmatico.
  • Cercare in grandi dataset usando direttamente Elasticsearch Query DSL.
async function main() {
const conn = "my-elastic"; // Nome della credenziale di accesso di connessione
// Controlla la connessione
const isUp = await g.elasticsearch.ping(conn);
if (!isUp) return g.log("Connessione fallita");
// Indicizza documenti in blocco con suddivisione automatica
const docs = [{ id: 1, title: "Portatile" }, { id: 2, title: "Mouse" }];
const bulkRes = await g.elasticsearch.bulk(conn, "products", docs, 1000);
g.log(`Indicizzati ${bulkRes.successful} documenti su ${bulkRes.total}`);
// Ricerca Query DSL
const searchRes = await g.elasticsearch.search(conn, "products", {
query: { match_all: {} }
});
g.log(`Risultati totali: ${searchRes.hits.total.value}`);
}

8 metodi in totale: vedi il Riferimento API per l’elenco completo.


Le connessioni a cluster Elasticsearch esterni seguono lo stesso modello di sicurezza delle credenziali di accesso:

  • Gli script di origine MCP sono bloccati. Quando un agente IA esegue uno script tramite MCP, tutte le chiamate g.elasticsearch.* restituiscono un errore. Questo impedisce all’IA di accedere a database esterni tramite automazione scriptata. Nota: l’indice Lucene locale g.search.* è accessibile a MCP.
  • I processi di lavoro ereditano l’origine del loro avviatore. Se MCP avvia un pool di processi di lavoro, anche quei processi vengono bloccati dall’accesso a Elasticsearch esterno.
  • Gli script avviati dall’utente hanno accesso completo. Gli script eseguiti con F5, i generatori di evento e i processori di coda possono usare tutti i metodi.

Le credenziali di connessione non vengono mai esposte tramite strumenti MCP: l’IA vede solo il nome della credenziale di accesso, non username o password.