- 引言
- Java 项目集成 Manticoresearch
- 新增文档操作
- 查询文档操作
- SQL 查询
- API 查询
- 总结
引言
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
实例,构建 SearchQuery
和 SearchRequest
对象,设置查询条件后调用 search
方法执行查询并输出结果。
总结
通过上述介绍和项目代码示例,我们了解了如何在 Java 项目中集成 Manticoresearch,以及如何使用其 Java API 进行新增文档和查询文档操作。SQL 查询和 API 查询各有优势,开发者可根据实际需求选择合适的查询方式。Manticoresearch 凭借其高性能和易用性,在全文搜索领域具有广阔的应用前景。