全文搜索服务

基于Lucene.NET的全文搜索服务,支持文档分块和索引管理,适用于文档检索和内容分析。

  • by breitreiter
  • C#
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 breitreiter/mcp-lucene-net

使用说明

MCP-Lucene。网

使用Lucene进行全文搜索的模型上下文协议(MCP)服务器。NET,支持文档分块。

概述

该项目由两部分组成:

  • /server -MCP服务器,通过Lucene提供搜索功能。NET索引
  • /idx -用于将文档(文本文件、PDF)索引到Lucene中的CLI工具。网

快速开始

1.索引文件

cd idx
dotnet run -- init -i ./lucene-index
dotnet run -- add -d "manual" -t "User Manual" -f "./manual.pdf"
dotnet run -- add -d "policy" -t "Privacy Policy" -c "Our privacy policy..."

2.启动MCP服务器

cd server
dotnet run ./lucene-index

3.搜索文档

服务器暴露了一个 Search 返回包含相关文档块的JSON的工具。

MCP配置

要在Claude Desktop或其他MCP客户端中配置服务器,请将以下内容添加到MCP配置中:

{
  "mcpServers": {
    "lucene-search": {
      "command": "/path/to/mcp-lucene-net/server/bin/Release/net8.0/server",
      "args": [
        "/path/to/your/lucene-index"
      ],
      "env": {}
    }
  }
}

替换 /path/to/mcp-lucene-net/server/bin/Release/net8.0/server 使用编译后的服务器二进制文件的实际路径 /path/to/your/lucene-index 带有Lucene索引目录的路径。

文档分块

文档会自动拆分为约250个单词块,重叠40个单词,以优化搜索相关性和LLM上下文使用。每个块包括:

  • id:唯一块标识符(例如“manual-chunk-001”)
  • title:带有零件号的描述性标题
  • content:约250字文本
  • source_document:原始文档ID
  • chunk_index:顺序块编号

CLI命令

# Initialize new index
idx init -i ./lucene-index

# Add single document
idx add -d "doc1" -t "Title" -c "Text content"
idx add -d "doc2" -t "Title" -f "./document.pdf"

# Bulk add from JSON
idx bulk -i ./lucene-index -j "./documents.json"

JSON格式

[
  {
    "Id": "doc1",
    "Title": "Document Title",
    "Content": "Document content..."
  }
]

需求

  • .NET 8.0
  • Lucene。净4.8.0倍
  • iText用于PDF提取