Skip to main content
Glama
by OpaqueGlass
indexConsumer.ts2.11 kB
import { debugPush, logPush } from "@/logger"; import { exportMdContent } from "@/syapi"; import { getSubDocIds } from "@/syapi/custom"; import { isValidStr } from "@/utils/commonCheck"; import { useProvider, useQueue } from "@/utils/indexerHelper"; import { getPluginInstance } from "@/utils/pluginHelper"; import { IEventBusMap } from "siyuan"; export class IndexConsumer { _interval; start() { this._interval = setInterval(this.consume.bind(this), 5000); } stop() { clearInterval(this._interval); } async consume() { debugPush("queue consuming"); const queue = useQueue(); // 从队列中取出5个id const idItem = await queue.consume(5); // 扩充id,部分会提供hasChild选项,这个时候需要获取子文档 const idList = []; for (let item of idItem) { idList.push(item["id"]); // OLD: 现在禁用了hasChild方式,由eventHandler获取 // if (item["hasChild"]) { // const subDocIds = await getSubDocIds(item["id"]); // if (subDocIds != null && subDocIds.length > 0) { // idList.push(...subDocIds); // } // } // if (isValidStr(item["id"])) { // idList.push(item["id"]); // } } // 获取id对应的文档内容 const contentPromiseList = idList.map(item=>exportMdContent({id: item, refMode: 4, embedMode: 1, yfm: false})); const contentList = await Promise.all(contentPromiseList); // 发送 const provider = useProvider(); for (let i = 0; i < contentList.length; i++) { if (!isValidStr(idList[i]) || !isValidStr(contentList[i]["content"])) { debugPush("submit ERROR", idList[i], contentList[i]["content"]); continue; } provider.update(idList[i], contentList[i]["content"]).catch(err=>{ logPush("RAG提交索引时遇到问题,该提交已被重新暂存!"); }); } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpaqueGlass/syplugin-anMCPServer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server