引言
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 凭借其高性能和易用性,在全文搜索领域具有广阔的应用前景。