深入探究Manticoresearch Java API:新增与查询文档实战

发布于:2025-06-26 ⋅ 阅读:(22) ⋅ 点赞:(0)

引言

Manticore Search 是一个使用 C++ 开发的高性能搜索引擎,创建于 2017 年,其前身是 Sphinx Search。它显著改进了 Sphinx 的功能,修复了数百个错误,几乎完全重写了代码并保持开源。在性能方面,相比 MySQL、Elasticsearch 等都有显著优势。

在这里插入图片描述

Java 项目集成 Manticoresearch

若要在 Java 项目中集成 Manticoresearch,需在 pom.xml 文件添加 Maven 依赖:

<dependencies>
    <!-- Maven -->
    <dependency>
        <groupId>com.manticoresearch</groupId>
        <artifactId>manticoresearch</artifactId>
        <version>8.0.0</version>
    </dependency>
</dependencies>

项目中的 pom.xml 文件也有相关依赖配置,如 <artifactId>manticoresearch</artifactId>,表明项目已集成该客户端。

新增文档操作

在项目的中,展示了如何使用 Java API 向 Manticoresearch 新增文档。以下是关键代码片段:

public class InsertExample {
    public static void main(String[] args) {
        ApiClient defaultClient = Configuration.getDefaultApiClient();
        defaultClient.setBasePath("http://127.0.0.1:9308");
        IndexApi indexApi = new IndexApi(defaultClient);

        try {
            String tableName = "acc_20250625";
            InsertDocumentRequest indexRequest = new InsertDocumentRequest();
            Acc acc = new Acc();
            acc.setCaller("20250625");
            //...其他属性
            indexRequest.table(tableName)
                        .id(System.currentTimeMillis())
                        .setDoc(doc);
            indexApi.insert(indexRequest);
            }
        } catch (ApiException | InterruptedException e) {
            System.err.println("Exception when calling Api function");
            e.printStackTrace();
        }
    }
}

上述代码先创建 ApiClient 并设置服务地址,接着实例化 IndexApi,然后构建 InsertDocumentRequest 对象并设置文档内容,最后调用 insert 方法将文档插入指定表中。

查询文档操作

SQL 查询

在项目的中,展示了如何使用 SQL 进行文档查询。示例代码如下:

ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("http://127.0.0.1:9308");
UtilsApi utilsApi = new UtilsApi(defaultClient);

try {
    SqlResponse selectResultList = utilsApi.sql("select * from testrt where gid =66", true);
    System.out.println(selectResultList);
    // 解析结果到对象
    JSON.parseArray(JSON.toJSONString(selectResultList.get())).forEach(str -> {
        ManticoreResult<TestRT> result = JSON.parseObject(JSON.toJSONString(str),
                new TypeReference<ManticoreResult<TestRT>>() {});
        System.out.println(result);
    });
} catch (ApiException e) {
    System.err.println("Exception when calling Api function");
    e.printStackTrace();
}

代码中创建 UtilsApi 实例,调用 sql 方法执行 SQL 查询语句,最后将查询结果解析为 ManticoreResult 对象。

API 查询

同样在项目中,展示了使用 Java API 进行文档查询的方法:

ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("http://127.0.0.1:9308");
SearchApi searchApi = new SearchApi(defaultClient);

try {
    String tableName = "testrt";
    SearchQuery query = new SearchQuery();
    query.setQueryString("@title test");
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.table(tableName).query(query);
    SearchResponse searchResponse = searchApi.search(searchRequest);
    System.out.println(searchResponse);
} catch (ApiException e) {
    System.err.println("Exception when calling Api function");
    e.printStackTrace();
}

此代码创建 SearchApi 实例,构建 SearchQuerySearchRequest 对象,设置查询条件后调用 search 方法执行查询并输出结果。

总结

通过上述介绍和项目代码示例,我们了解了如何在 Java 项目中集成 Manticoresearch,以及如何使用其 Java API 进行新增文档和查询文档操作。SQL 查询和 API 查询各有优势,开发者可根据实际需求选择合适的查询方式。Manticoresearch 凭借其高性能和易用性,在全文搜索领域具有广阔的应用前景。


网站公告

今日签到

点亮在社区的每一天
去签到