Skip to content

Search()

任延华 edited this page Jan 20, 2020 · 1 revision

检索。包装了dp2library的SearchBiblio() GetEntities() GetOrders() GetIssues() GetCommts() GetBiblioSummary() GetBiblioInfos() GetReaderInfo() API。 searchBiblio 检索书目。

案例1: DbName List:<全部> Query Word:中国 Use:title Match Style:left Format List: id,xml,timestamp,metadata Resultset Name:test Position:0,2 用检索词“中国”检索题名。匹配方式为前方一致。检索结果放入名为test的结果集,后继API可以从中提取数据。本次API从命中结果中索引位置0开始一共返回2条记录。 Format List中包含”id”表示返回记录路径;包含”cols”可返回默认的浏览列,会以col元素放入Data成员内容的XML记录中。 getBiblioInfo 获得书目记录。 对应于dp2library的GetBiblioInfos() API。

案例1: Query Word: @path-list:中文图书/1,中文图书/2 Format List: xml 返回2个元素。是两条书目记录的XML。 因为dp2library原始API设计的一些缺陷,RecPath成员中只返回了dp2library服务器名称部分(@xxxx),没有包括书目记录路径。如果想要同时获得书目记录路径,可以使用后面介绍的“案例2”的方法。

案例2: Query Word: @path-list:中文图书/1,中文图书/2 Format List: xml,outputpath 返回4个元素。顺次为第一条书目记录XML、第一条书目记录的路径、第二条书目记录XML、第二条书目记录的路径。 不过需要注意的是,记录路径,纯路径,放在Data元素中了,dp2library服务器名称依然要从RecPath成员内容中的@符号后面获得。

案例3: Query Word:中文图书/1 Format List:summary 只获得一条书目记录的书目摘要。

案例4: Query Word:@itemBarcode:0000001 Format List:xml 只获得一条书目记录的XML格式。检索词是册条码号,即检索出这条册记录所从属的书目记录。 如果册记录不存在,则返回结果中元素的Data成员会是空值。

案例5: Query Word:中文图书/1 Format List:table 只获得一条书目记录的table格式。

table格式样例如下:

Table格式是根据dp2library实例下的cfg/table_unimarc.fltx配置的

getBiblioSummary 获得书目摘要。 Search() API 的getBiblioSummary功能,实际上是通过调用dp2library的GetBiblioSummary() API 实现的功能: public int GetBiblioSummary(string strItemBarcode, string strConfirmItemRecPath, string strBiblioRecPathExclude, int nMaxLength, out string strBiblioRecPath, out string strSummary, out string strError) 但Seaarch() API 为了兼容各种功能,其参数的命名方式和getBiblioSummary功能不太适配,需要特别留意。 Search() API 的参数,和 GetBiblioSummary() API 参数的对应关系如下。 * QueryWord --> strItemBarcode * UseList --> strConfirmItemRecPath * MatchStyle --> strBiblioRecPathExclude (GetBiblioSummary()的nMaxLength参数暂未使用)

案例1: Query Word:T0000001 根据册条码号获得书目记录摘要。Format List 参数不起作用,因为此功能一定是返回的”summary”格式。另外返回的元素中Format成员值会是空值,因为此时格式是固定的,无需声明。

案例2: Query Word:@bibliorecpath:中文图书/1 根据书目记录路径获得书目记录摘要。

案例3: Use:中文图书实体/1 根据册记录路径获得书目记录摘要。注意Use参数实际上对应于GetBiblioSummary() API的strConfirmItemRecPath参数。

案例4: Use:中文图书实体/1 Match Style:中文图书/1 根据册记录路径“中文图书实体/1”获得书目记录摘要,并排除预先知道的书目记录“中文图书/1”。注意Use参数实际上对应于GetBiblioSummary() API的strConfirmItemRecPath参数;Match Style参数之际上对应GetBiblioSummary() API的strBiblioRecPathExclude参数(用于排除的书目记录路径)。 功能实现的原理是,如果遇到检索出来的书目记录正好其路径为“中文图书/1”,则此API就不返回其书目摘要了。这通常是因为前端已经具有这个记录的摘要缓存,这样带有条件地调用,可以节省部分运行开销。

getItemInfo 获得册/订购/期/评注记录。对应于dp2library的GetEntities() API。

案例1: Query Word:中文图书/1 DbName List:entity Format List: Start:0 Count:-1 获取书目记录“中文图书/1”下属的全部册记录。Count为-1表示尽可能多地获取,但可能因为空间限制,只能获取到一定数目的元素,这样就可能需要再次调用此API以继续获取后面的元素。

案例2: Query Word:中文图书/1 DbName List:entity Format List:opac Start:0 Count:-1 以OPAC格式获取书目记录下属的全部册记录。所谓OPAC格式,就是在原来的XML格式基础上自动添加了一些方便OPAC显示的字段,例如借阅信息中增加了是否超期的信息。 Format List参数对应于dp2library的GetEntities() API的strStyle参数,可参阅相关文档了解其用法。

案例3: Query Word:中文图书/1 DbName List:issue Format List: Start:0 Count:-1 获取书目记录“中文图书/1”下属的全部期记录。 如果此书目库没有定义期库,则返回值中ErrorCode成员值为” ItemDbNotDef”。

getPatronInfo 获得读者记录信息。

案例1: Query Word: R0000001 Format List: html,advancexml,advancexml_borrow_bibliosummary 获得读者证条码号为R0000001的读者记录,以两种格式返回:html和advancexml。” advancexml_borrow_bibliosummary”是对advancexml格式的特性的进一步修饰,它不是一种独立的格式名称。因此返回的记录个数应当是两个而不是三个。 另外,一般情况下HTML格式的读者信息很可能尺寸超过SignalR默认的一次消息发送64K极限(比如借阅信息的个数很多,而且又都创建了书目摘要),有可能需要调整GlobalHost.Configuration.MaxIncomingWebSocketMessageSize参数才能让消息能够顺利发送。

案例2: Query Word: R0000001 Format List: xml,timestamp 同时返回XML记录和时间戳。

getUserInfo 获得工作人员账户信息。对应于dp2library的GetUser() API。

案例1: Query Word: supervisor Position:0,-1 返回用户名为supervisor的账户信息。始终返回XML格式。

案例2: Query Word: Position:0,-1 返回全部用户的账户信息。

案例3: Query Word: Position:0,1 返回全部用户的账户信息中的第一个。

getBrowseRecords 获得各种数据库记录的浏览格式或者XML记录格式。 对应于dp2library的GetBrowseRecords() API。

案例1: Query Word: 中文图书/1,中文图书/2 Format List:id,cols 获得记录路径和默认的浏览列。浏览列被放在返回元素的Data中,以XML格式方式,每个列对应一个col元素。

Query Word: 中文图书/1,中文图书/2 Format List:id,cols,xml,timestamp,metadata 获得记录路径、默认的浏览列、XML记录、时间戳、元数据。 浏览列被放在返回元素的Data中,以XML格式方式,每个列对应一个col(XML)元素。 XML记录也在Data成员中,和浏览列混合在一起。 时间戳在Timestamp成员中。 元数据在Data成员中,和其他信息混合在一起,XML元素名为metadata。

另外还可以参考dp2library的GetBrowseRecords() API的strBrowseInfoStyle参数用法,比如,可以明确指定浏览列的构造方法: format:cfgs/new_browse 表示使用数据库内核该数据库下的cfgs/new_browse配置文件来构造浏览格式。这个配置文件显然需要系统管理员去专门配置。 format:@coldef:/parent|/barcode 表示浏览列具有两个列,分别取自XML记录的(根元素下的)parent和barcode元素。不过,由于dp2系统所采用的书目MARCXML格式有特定名字空间,目前@coldef方式还无法对MARCXML格式的元素抽取方法进行定义。但用在读者记录、册记录XML格式上还是没有问题的。

getSystemParameter 获得dp2library服务器的各种参数。 基本对应于dp2library的GetSystemParameters() API。

但下列参数例外:

  1. 当QueryWord为_clock时,表示希望获得dp2library的时钟,对应于dp2library的GetClock() API。
  2. 当QueryWord为_capoVersion时,表示希望获得dp2Capo的版本,第一个具备此功能的dp2Capo版本为1.9。 (较早的dp2Capo在上述功能被调用时会返回ErrorInfo=未知的 category '_clock' 和 name '', ErrorCode=NotFound)

案例1: Query Word:cfgs Format List: getDataDir 获得dp2library的数据目录。

案例2: Query Word:system Format List: libraryCodes 获得所有分馆名。

案例3: Query Word:_valueTable Format List: readerType DbNameList:读者库名,一般可设置为空 获得读者类型。返回的字符串中有逗号间隔。”{海淀分馆} 本科生”表示这个特定分馆的值列表,前端可根据馆代码过滤选用。

Clone this wiki locally