全文检索引擎
应用FullSearchPluginProfile
申请全文检索引擎服务,注册到该应用的PluginListener
类(见本文档插件应用 > PluginListener章节)
<requires>
<require appId="com.actionsoft.apps.fullsearch" notActiveHandler="warning"/>
</requires>
4.在你的应用中调用相关ASLP服务接口,实现自己的全文检索服务
5.场景模拟,调试
对于全文检索相关知识(如搜索语法、参数),可翻阅Apache Lucene相关技术文档
由FullSearchPluginProfile
类申请全文检索引擎服务。
// 注册全文检索引擎服务
list.add(new FullSearchPluginProfile(repositoryName, isSupportHTTP, desc));
repositoryName
-索引库名,建议使用英文字母和数字命名(区分大小写),不建议使用中文、怪字符和空格等isSupportHTTP
-该库是否开放HTTP APIdesc
-说明入库的索引文件将自动存储在以下位置
%AWS-HOME%/doccenter/%appId%/_fullsearch/%repositoryName% //AWS-HOME指安装目录 //appId指你的应用Id //repositoryName指注册申请的索引库名称
可以使用SDK.getAppAPI.callASLP
和HTTP两种方式调用
入库操作,创建内容索引。如果提供了documentPath
且该文件类型支持正文抽取,将该正文入库。如果你需要自定义索引字段,丰富条件查询,可以使用otherFields
定义扩展字段的结构。
项 | 说明 |
---|---|
地址 | aslp://com.actionsoft.apps.fullsearch/createIndexByContent |
参数 | -repositoryName :索引库名(必须)- documentId :索引ID(必须)- content :内容(必须)- abstract :摘要- documentPath :要入库的文件全路径- title :标题- createTime :创建时间,格式为“yyyy-MM-ddHH:mm:ss”,不填则默认为当前时间- otherFields :扩展的索引字段域结构描述,JSONArray串。 |
返回值 | - 成功返回状态为ok 的提示- 其他见 result 状态值和msg 项 |
otherFields
扩展的索引字段域结构描述,是一个JSONArray串,每一个JSONObject中应该包括:
属性名 | 说明 |
---|---|
fieldName | 索引域名(必须) |
fieldType | 索引类型,支持“int”、“text”、“String”。“int”和“String”类型索引不分词,“text”类型索引内容会进行分词,默认为“text” |
fieldContent | 索引内容(必须) |
fieldBoost | 影响查询结果打分,float类型。索引域的boost值越大,查询结果得分越多,排名越靠前,默认为1.0 |
fieldStore | 是否保存。如果保存,查询结果返回该字段,否则不返回到查询结果。“true”表示保存 |
入库操作,通过给定的文件路径创建索引
项 | 说明 |
---|---|
地址 | aslp://com.actionsoft.apps.fullsearch/createIndexByFile |
参数 | -repositoryName :索引库名(必须)- documentPath :要入库的文件全路径(必须) |
返回值 | - 成功返回状态为ok 的提示- 其他见 result 状态值和msg 项 |
删除索引。如果要删除的索引由createIndexByFile
入库,可给定documentId
和documentPath
值为文件路径名
项 | 说明 |
---|---|
地址 | aslp://com.actionsoft.apps.fullsearch/deleteIndex |
参数 | -repositoryName :索引库名(必须)- documentId :索引ID,入库时给定的ID(必须)- documentPath :入库的文件全路径 |
返回值 | - 成功返回状态为ok 的提示- 其他见 result 状态值和msg 项 |
更新索引,接口参数参见/createIndexByContent
简单查询
项 | 说明 |
---|---|
地址 | aslp://com.actionsoft.apps.fullsearch/search |
参数 | -repositoryName :索引库名(必须)- searchText :搜索内容(必须)- highlight :是否高亮显示,“true”高亮显示,默认为“false”- maxResult :最大结果数,默认为“1000”pageNo :页数,分页查询需要提供pageSize :每页结果数,分页查询需要提供sortFields :排序字段,JSONObject字符串格式,key为要排序的字段,value为“true”或“false”。“true”表示降序排序;“false”表示升序排序 |
返回值 | - 成功返回类型为List<Map<String, String>> 的JSON串- 其他见 result 状态值和msg 项 |
如该索引库定义了扩展字段(
otherFields
),那些设置fieldStore
为false
的字段值可以参与查询但不提供至查询结果中
高级查询,接口参数参见/search
。与简单查询不同的是,searchText
参数必须是一个查询表达式,具体用法如下:
以上查询可以组合使用,可翻阅Apache Lucene相关技术文档
通常需要对查询结果做权限过滤。如果权限简单(如基于业务类型),可以在入库时通过创建扩展字段,在查询时增加匹配条件;如果权限复杂(如基于用户组织身份、业务数据权限),可以在你的程序中对搜索结果做二次权限过滤
检索结果总数,接口参数参见/search
。
工具服务,抽取文档内容。支持的文档后缀类型如下
如支持更多后缀类型的文件,可修改该App的
PARSEDOC-TYPE
参数