dp2API之SearchReader - DigitalPlatform/dp2 GitHub Wiki
LibraryServerResult SearchReader(
string strReaderDbNames,
string strQueryWord,
int nPerMax,
string strFrom,
string strMatchStyle,
string strLang,
string strResultSetName,
string strOutputStyle);
用途:检索读者记录。
参数表:
类型 参数名 说明
string strReaderDbNames 读者库名列表
string strQueryWord 检索词
int nPerMax 最大命中数。-1表示不限制
string strFrom 检索途径
string strMatchStyle 匹配方式
string strLang 语言代码,传固定值zh
string strResultSetName 结果集名,调用者自己起一个名称,后面用这个名称获取命中结果
string strOutputStyle 输出方式,可为空
返回值:
成员 返回值 说明
LibraryServerResult.Value
-1 错误
0 没有命中
>=1 命中。返回值为命中的记录条数
LibraryServerResult.ErrorInfo 出错信息
权限:需要searchreader权限。读者身份登录不允许使用本API。
strReaderDbNames参数的值可以为空、或者“<全部>”、或者“”,均表示针对当前存在的全部读者库进行检索。也可以由若干读者库名连接以逗号,表示只针对这些特定的读者库进行检索。dp2Library在执行时会验证此参数中提供的读者库名,如果不是已经定义的读者库名会返回出错。
strFrom参数指定了检索途径。读者库具体可以使用哪些检索途径,可以参考dp2Library数据目录下的templates/item/keys文件。
当针对检索途径“__id”进行检索时,可以在检索词中使用符号“-”,构成范围检索请求。例如,检索词为“1-200”,表示希望检索记录ID从1到200范围的读者记录。
当针对检索途径“失效日期”进行检索时,可以在检索词中使用符号“”,构成范围检索请求。例如,检索词为“Sun, 01 Apr 2012 00:00:00 +0800Mon, 30 Apr 2012 00:00:00 +0800”,表示希望检索失效日期从2012/4/1到2012/4/30范围的读者记录。
注:“失效日期”检索途径目前是由RFC1123时间字符串构造和检索的。由于通常时间字符串中,单个时间字符串中本身可能包含横杠符号“-”(例如“1990-8-8”),所以倾向于使用“~”来作示范围连接符号。
strMatchStyle参数指定了检索词在检索中的匹配方式。为left/middle/right/exact之一,分别表示前方一致/中间一致/后方一致/精确一致。如果检索词为空,匹配方式为”exact”,表示希望检索相关检索途径中的空值,也就是不具备这个检索点的记录。如果要以检索词为空检索出数据库中的全部具有相关检索点的记录,则需要用”left”匹配方式(最多能命中的结果数量受nPerMax参数的限制)。
strLang参数指定了当前语言,传固定值zh。
strResultSetName参数指定了结果集名。此参数值可以为空,相当于”default”。如果希望某一次检索产生的结果集内容不要被后继的检索操作冲掉,可以为每次检索使用不同的结果集名。 结果集名的名字空间范围是一个通讯通道以内。不同的通讯通道之间即便是相同的结果集名也对应着完全不同的结果集对象。在通道存活期间,只要没有后继的检索操作冲掉一个结果集原先的内容,那这个结果集原先的内容就会一直存在。
strOutputStyle参数指定了检索命中结果输出到结果集中的方式。如为”keycount”,表示返回命中的检索点和命中数,而不返回具体命中的记录路径;如为”keyid”,则表示返回命中的记录路径和命中的检索点。缺省为”keyid”;如为空,则表示返回命中记录路径。后两种情况下,在利用获取结果集信息的API获取结果集内的元素信息的时候,可以有选择地获得记录的浏览列和记录本身(XML格式数据)。
本API执行后,只返回命中的结果数量,而检索命中的记录结果本身被存储在dp2Library端(实际上是在dp2Kernel)的结果集之中了,需要前端调用GetSearchResult() API才能获取结果集中的信息。