ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Docs 如何接入 Find 搜索服务启用文档全文检索

Docs 如何接入 Find 搜索服务启用文档全文检索 Docs 如何接入 Find 搜索服务启用文档全文检索【免费下载链接】docsDocs is an open-source text editor: web-native, made for real-time collaboration, cleanly structured documents and sub-documents with full ownership of your data. Built to scale with Django and React.项目地址: https://gitcode.com/GitHub_Trending/docs150/docsDocs 内置的文档搜索默认只按标题匹配无法检索正文内容。如果你的环境里已经部署了 La Suite 的 Find 搜索服务可以通过 Docs 提供的FindDocumentIndexer把文档索引进 Find从而让api/v1.0/documents/search/端点对接 Find 索引实现全文检索以及可选的 hybrid 混合检索。这条路径来自项目自带的集成文档 documentation/search.md下面按接入顺序说明需要完成的操作。前提条件已经部署一个可访问的 Find 服务Docs 通过两个 HTTP 端点与它通信索引推送端点和搜索端点。Docs 的 Django 后端可以正常启动。Docs 侧的索引器默认是关闭的开发环境配置 env.d/development/common 中SEARCH_INDEXER_CLASS处于注释状态文件内注释为 Indexer (disabled by default)需要显式配置后才生效。文档说明 Find 对索引使用 service provider 认证对搜索使用 OIDC 认证两类凭据都要在 Docs 侧配置。第一步在 Find 中为 Docs 创建索引服务在 Find 应用中为 Docs 配置一个Service字段如下Name:docs—— 对应 Docs 应用发出的request.auth.nameClient id:impress—— 对应 Docs 应用的 token audience 或 client_id这两个值必须与 Docs 侧保持一致否则索引请求的认证信息对不上。第二步配置 Docs 的 Django 设置按 documentation/search.md 的要求向 Docs 应用添加以下设置SEARCH_INDEXER_CLASScore.services.search_indexers.FindDocumentIndexer SEARCH_INDEXER_COUNTDOWN10 # Debounce delay in seconds for the indexer calls. SEARCH_INDEXER_QUERY_LIMIT50 # Maximum number of results expected from the search endpoint INDEXING_URLhttp://find:8000/api/v1.0/documents/index/ SEARCH_URLhttp://find:8000/api/v1.0/documents/search/ # Service provider authentication SEARCH_INDEXER_SECRETfind-api-key-for-docs-with-exactly-50-chars-length # OIDC authentication OIDC_STORE_ACCESS_TOKENTrue # Store the access token in the session OIDC_STORE_REFRESH_TOKENTrue # Store the encrypted refresh token in the session OIDC_STORE_REFRESH_TOKEN_KEYyour-32-byte-encryption-key各变量含义与替换要求变量用途取值来源SEARCH_INDEXER_CLASS启用索引器的后端类指向 Find 索引器实现固定为文档给出的类路径SEARCH_INDEXER_COUNTDOWN索引调用之间的防抖延迟秒文档示例为 10documentation/env.md 给出的默认值为 1SEARCH_INDEXER_QUERY_LIMIT搜索端点期望返回的最大结果数文档示例为 50documentation/env.md 默认值同为 50INDEXING_URL/SEARCH_URLFind 的索引端点与搜索端点文档中的http://find:8000/...是示例地址替换为你实际部署的 Find 地址SEARCH_INDEXER_SECRETFind 侧签发的 API key索引推送时使用由 Find 侧生成文档示例值是占位示例需替换为真实的 50 字符密钥OIDC_STORE_ACCESS_TOKEN/OIDC_STORE_REFRESH_TOKEN把 access token 存入 session、把加密后的 refresh token 存入 session搜索时以 OIDC 身份调用 Find按文档置为TrueOIDC_STORE_REFRESH_TOKEN_KEY加密 refresh token 的 Fernet 密钥必须是合法的 Fernet key32 字节 url-safe base64用脚本生成见下SEARCH_INDEXER_CLASS必须指向存在的类且INDEXING_URL、SEARCH_URL、SEARCH_INDEXER_SECRET三个值缺一不可——索引器初始化时检查这三项缺任何一项都会以ImproperlyConfigured报错并让索引器保持不可用见 search_indexers.py。生成 Fernet 密钥使用仓库自带的脚本 bin/generate-oidc-store-refresh-token-key.shbin/generate-oidc-store-refresh-token-key.sh脚本用openssl rand -base64 32生成随机值并追加写入env.d/development/common.local文件名为脚本内固定变量COMMON_LOCAL输出形如✓ OIDC_STORE_REFRESH_TOKEN_KEY generated and stored in env.d/development/common.local注意该脚本只写开发环境的common.local文件如果你的部署方式不同把生成的 key 值写入你的环境变量来源即可。第三步用 index 管理命令做全量索引配置生效后每次Document或DocumentAccess保存都会触发增量索引但存量文档需要一次引导式全量索引。项目提供了对应的管理命令 index.pypython manage.py index可选参数--batch-size N控制单批索引的文档数量默认 50python manage.py index --batch-size 100命令行为与结果判断若索引器未启用或未正确配置命令直接报错The indexer is not enabled or properly configured.说明第二步的设置没有生效类路径写错、缺少 URL 或密钥。索引过程中 Find 端异常时命令抛出Unable to regenerate index。成功时输出如下日志文档格式来自命令源码数字为占位示例Starting to regenerate Find index... Search index regenerated from 12 document(s) in 0.34 seconds.document(s)后的数量是本次实际推送给 Find 的文档数可用于核对是否与库里文档量级相符。第四步启用功能开关Find 搜索集成由两个功能开关控制可在 Django admin 界面为用户开启flag_find_hybrid_searchflag_find_full_text_search开关决定该用户的检索层级两个都开启时使用最 advanced 的 hybrid 检索只开 full text 时用全文检索一个都不开则回落到基础标题检索即接入前的默认行为。这意味着接入 Find 后存量用户体验不变直到你为对应用户显式开启开关。结果验证索引链路运行python manage.py index看到 Search index regenerated from N document(s) 日志说明 Docs 到 Find 的索引推送可用SEARCH_INDEXER_SECRET与INDEXING_URL配置正确。搜索链路api/v1.0/documents/search/现在作为 Find 索引的代理端点工作。用带 OIDC 凭据的认证用户请求该端点查询参数q结果按updated_at倒序返回结果上限受SEARCH_INDEXER_QUERY_LIMIT约束。开关行为给某用户只开flag_find_full_text_search确认其搜索能命中正文内容再开flag_find_hybrid_search确认检索切换为 hybrid。两个 flag 的名称与优先级规则以 documentation/search.md 为准。限制与注意索引器默认关闭不设置SEARCH_INDEXER_CLASS时保存文档不会触发任何索引调用index命令也会直接报错这是设计行为而非故障。SEARCH_INDEXER_COUNTDOWN是防抖延迟短时间内的多次文档保存在延迟窗口内合并处理而不是逐次实时推送刚保存的文档在 Find 中可检索可能略有延迟。搜索请求走 OIDC需要 session 中存有 access tokenOIDC_STORE_ACCESS_TOKENTrue刷新 token 则依赖OIDC_STORE_REFRESH_TOKEN_KEY加密保存。三个 OIDC 相关设置要一起配置。文档中还引用了一个how-to-use-indexer.md说明 Find 侧索引器的更多细节该文件不在当前仓库内Find 侧的具体配置以 Find 项目自身文档为准本文只覆盖 Docs 侧的接入步骤。【免费下载链接】docsDocs is an open-source text editor: web-native, made for real-time collaboration, cleanly structured documents and sub-documents with full ownership of your data. Built to scale with Django and React.项目地址: https://gitcode.com/GitHub_Trending/docs150/docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表