使用介绍:结构说明:框架分为5个部分:1.search package:TRS检索功能类包。
a)connection:TRS服务器数据库连接关闭管理器。
(1)可通过调用者传递参数来进行服务器的连接,也可通过默认读取配置文件的方式连接服务器。
(2)可支持新集群配置模式。
b)domain:TRS检索服务对象域。
(1)Page:翻页对象实体。
(2)SearchRequest:检索请求对象实体。
(3)SearchResponse:检索结果对象实体。
(4)KeywordMark:标红摘要对象实体。
c)search:TRS检索服务管理包(1)BuildResultPage:结果集信息构建器。
(2)SearchCore:核心检索类。
(3)SearchManager:检索接口。
(4)SearchManagerImpl:检索请求接入类。
2.ckmUtils:CKM服务功能类包。
a)connection:CKM服务器连接管理器。
(1)可通过调用者传递参数来进行服务器的连接,也可通过默认读取配置文件的方式连接服务器。
b)ckmManager:CKM针对检索功能相关的常用工具。
(1)CkmManager:CKM涉及检索周边功能,纠错词,拼音提示,相关词/主题词/关键词的抽取以及PLO自然语句分词处理功能。
(2)CkmPloSeg:PLO自然语句分词处理器。
3.condition:检索表达式整合与生成管理器。
a)ConditionGenerator:检索表达式管理器。
(1)包含对检索表达式的生成与集成。
针对文本形式、时间日期形式和数据类型进行标准检索表达式的生成功能。
(2)可支持时间日期表达式的优化处理。
(3)可支持模糊检索表达式生成优化处理。
(4)集成PLO自然语句分词功能。
4.tools:管理工具包:a)Config:配置文件读取,加载配置项功能工具类。
b)ReDateUtil:时间信息处理工具类。
c)SearchUtils:检索相关工具类。
d)StringHtmlFilter:字符串Html字符过滤器。
e)SubInfoGetter:摘要标红的生成与优化处理器。
5.配置文件properties:a)searchTools.properties:配置TRS检索基本配置项。
(1)配置TRS服务器连接的相关参数。
(2)database:TRS服务器检索使用的表名或视图名称。
(3)subInfoColumn:检索中所需的细览字段。
(4)subInfoLength:检索中细缆内容需要获取摘要长度信息。
默认120.(5)summaryColumn:检索中所需的概览字段。
(6)redflagColumn:检索中需要额外标红的概览字段。
(7)lEstimateUnit:快速估算检索中所使用的检索逻辑段记录数和至少返回的条目数。
(8)lEstimateStops:快速估算检索中至少返回的条目数(9)iMaxCount:分类统计检索稿件最大数阀值。
b)ckmConfig.properties:(1)CKM服务器连接所需参数。
(2)ckmPloSegFlag:CKM PLO分词处理开关。
默认false。
(3)ckmPloSegCfg:CKM PLO分词词性配置。
默认为CKM所需配置。
(4)ckmPloSegLength:CKM PLO分词生成最大词数。
默认为8个。
重要类说明(具体含义可见API):1.SearchRequest:检索服务请求对象域。
检索请求必需的参数信息集合。
其中参数可通过用户进行set赋值,如未进行赋值则通过读取配置文件的配置项进行赋值操作。
a)pageNo:当前页。
默认1.b)pageSize:单页最大条目。
默认30.c)iOptionMask:检索连接设置掩码。
包含同义词、反义词、上位词、全/半角扩展。
默认为自动进行全/半角字符扩展检索(TRSConstant.TCM_KAXECX)。
该掩码用于快速估算搜索、普通检索、分类统计。
d)iSearchOption:检索选项辅助掩码。
包含按字、同一排序、LIFO备选排序、缺省正文字段的与、或、非、异或关系。
默认为备选排序为后进先出(TCM_LIFOSPARE)。
该掩码用于快速估算搜索、普通检索、分类统计。
e)database:数据库表名/视图名。
默认读取配置文件项。
f)whereClause:检索条件表达式。
g)sortClause:排序方式。
h)dateColumnList:需要特殊进行时间格式转换的时间字段。
List<String[]>类型,string[0]时间字段,string[1]时间格式。
i)subInfoColumn:摘要字段。
检索后对该字段进行摘要截取,过滤html特殊字符,检索词标红操作。
默认读取配置文件项。
j)subInfoLength:摘要长度。
默认120.k)summaryColumn:概览字段。
默认读取配置文件项。
系统会将三个字段信息进行处理,做为readOption结果集读取设置。
l)redflagColumn:需要标红的概览字段。
m)lEstimateUnit:快速估算检索的单个逻辑段记录数。
默认读取配置文件项,如为空,则赋值100000。
n)lEstimateStops:快速估算检索中至少返回的记录数。
默认读取配置文件项,如为空,则赋值200.o)classResultColumnName:分类统计中待统计的列名。
p)classResultColumnValue:分类统计中需要统计的值。
值间用\r做连接。
q)MaxCount:分类统计中,进行分类的数量条目依据。
默认读取配置文件项,如为空,则赋值0,无限制。
r)bMixEnable:分类统计中混合排序与独立排序设置。
默认为在每个视图或物理数据内做独立排序(false)。
s)iOption:分类统计参数设置。
默认为筛选类别名按生序排序,否则按降序排序(TRSConstant.CLASSASCENT)。
2.searchManager:检索服务接口。
3.searchManagerImpl:检索服务请求类。
a)executeTRSResultClass:分类统计检索。
方法多态。
b)executeTRSSearch:常规检索。
方法多态。
c)executeTRSQuickSearch:快速估算检索。
方法多态。
4.ConditionGenerator:检索条件表达式生成整合处理器:a)createNumConditon:生成标准数字类型检索表达式方法。
方法多态。
b)createTextCondition:生成简单标准文本类型检索表达式方法。
方法多态。
c)createAdvTextCondition:生成标准文本类型检索表达式方法。
方法多态。
d)createDateCondition:生成简单标准日期类型检索表达式方法。
方法多态。
e)createAdvDateCondition:生成标准日期类型检索表达式方法。
方法多态。
5.CkmManager:CKM针对检索周边功能。
a)getRealWords:处理自然语句分词。
方法多态。
b)ckmCollationText:政治常识校验。
方法多态。
c)ckmPySearch:拼音提示,拼音/短语纠错提示。
方法多态。
d)ckmAbstract:关键词内容摘要提取。
方法多态。
e)ckmKeySearch:生成相关提示词。
方法多态。
f)ckmPOLSearch:通过词性抽取人物、机构、地点主题词。
经常使用的几个常用函数举例:(具体使用方法:参见公司svn下载web-search-demo)1.TRS检索a.服务器连接://有参数的TRS服务器连接初始化。
SimpleConnectionManagerImpl scm = newSimpleConnectionManagerImpl(host, port, username, password,strOptions);//默认读写配置文件的TRS服务器连接初始化。
SimpleConnectionManagerImpl scm = newSimpleConnectionManagerImpl();b.初始化检索接口://初始化检索接口SearchManagerImpl smimpl = new SearchManagerImpl();c.快速估算检索:sre = smimpl.executeTRSQuickSelect(sr, redSearchWord, scm);d.分类统计检索:sre = smimpl.executeTRSResultClass(sr, scm);e.常规检索:sre = smimpl.executeTRSSearch(sr, redSearchWord, scm);2.CKM纠错与相关提示:1.CKM连接a.服务器连接://有参数的CKM服务器初始化连接:CkmConnectionManager ckmConn = newCkmConnectionManager(ckmUrl, ckmName, ckmPassword);//默认读取配置文件的CKM服务器初始化连接CkmConnectionManager ckmConn = new CkmConnectionManager();b.CKM接口初始化:CkmManager ckmManager = new CkmManager();c. 短语相关提示://检索词作为参数:list = ckmManager.ckmKeySearch(searchword.trim());//Soap、检索词、模板名称做为参数:list = ckmManager.ckmKeySearch(ckmSoapClient, searchword.trim(), modelName);d. 拼音提示、词语纠错://检索词作为参数:list = ckmManager.ckmPySearch(searchword.trim());//Soap、检索词、模板名称做为参数:list = ckmManager.ckmPySearch(ckmSoapClient, searchword.trim(), modelName);3.检索表达式生成://初始化表达式处理器:ConditionGenerator conGetor = new ConditionGenerator();//时间表达式处理:表达式生成且进行优化String a = conGetor.createAdvDateCondition("doc_writedate,sys_lastmodified", "2001.10.21", "2011.12.02", SearchUtils.EXP_AND, true);结果:(doc_writedate_DAY=between['2001.10.21','2001.10.31'] ordoc_writedate_DAY=between['2011.12.1','2011.12.2'] ordoc_writedate_MONTH=between['200111','200112'] ordoc_writedate_MONTH=between['201101','201111'] ordoc_writedate_YEAR=between['2002','2010'])//时间表达式处理:表达式生成且进行优化String m = conGetor.createAdvDateCondition("doc_writedate,sys_lastmodified", SearchUtils.COLUMN_EQUAL, -997, SearchUtils.EXP_AND, true);结果:(doc_writedate_DAY=between['2009.4.3','2009.4.30'] ordoc_writedate_DAY=between['2011.12.1','2011.12.26'] ordoc_writedate_MONTH=between['200905','200912'] ordoc_writedate_MONTH=between['201101','201111'] ordoc_writedate_YEAR='2010') and(sys_lastmodified_DAY=between['2009.4.3','2009.4.30'] orsys_lastmodified_DAY=between['2011.12.1','2011.12.26'] orsys_lastmodified_MONTH=between['200905','200912'] orsys_lastmodified_MONTH=between['201101','201111'] orsys_lastmodified_YEAR='2010')//时间表达式处理:表达式生成且不进行优化String e = conGetor.createAdvDateCondition("DOC_WRITEDATE,sys_lastmodified", "2001/10/21", "2011/12/02", SearchUtils.EXP_AND, false);结果:DOC_WRITEDATE = between['2001/10/21','2011/12/02'] andsys_lastmodified = between['2001/10/21','2011/12/02']//简单时间表达式处理:String b = conGetor.createDateCondition("doc_writedate", -40);结果:doc_writedate=between['2011-11-16','2011-12-26']String c = conGetor.createDateCondition("doc_writedate","2001-01-26", "");结果:doc_writedate = between['2001-01-26','2011-12-26']//数字表达式处理:String numStr = gg.createNumCondition("DOC_LENGTH",SearchUtils.COLUMN_EQUAL, "10,300", SearchUtils.EXP_AND);结果:DOC_LENGTH = between['10','300']String numStr = gg.createNumCondition("DOC_LENGTH, AV_LENGTH", SearchUtils.COLUMN_EQUAL, "10,300", SearchUtils.EXP_AND);结果:DOC_LENGTH = between['10','300'] and AV_LENGTH = between['10','300']//文本表达式处理:生成表达式且为模糊检索:String textStr1 = gg.createAdvTextCondition("DOC_CONTENT,SYS_TOPIC", SearchUtils.COLUMN_OREQUAL, "北京上海", SearchUtils.EXP_AND, true, true, false);结果:(DOC_CONTENT,SYS_TOPIC) += like('北京') AND (DOC_CONTENT,SYS_TOPIC) += like('上海')//简单表达式处理:String textStr = gg.createTextCondition("DOC_CONTENT", SearchUtils.COLUMN_EQUAL, "北京上海", SearchUtils.EXP_AND);结果:DOC_CONTENT = ('北京' AND '上海')。