NLQ 服务的部署

阅读(113) 标签: nlq server, 部署, server,

本例按照嵌入式报表DQL JDBC+NLQ JDBC来做演示。

为了帮助用户快速上手,安装包自带了一个词典文件orders.nlq,位于[安装根目录]\report\dct\zh\汉语查询教程示例.zip中,接下来以此文件为例讲述如何部署NLQ 服务:

 

(一) 加载所需jar

将以下NLQ JDBC需要使用的jar放在应用程序能加载到的目录下,获取路径为报表[安装根目录]\report\web\webapps\demo\WEB-INF\lib

nlq-***.jar    NLQ 服务计算引擎及JDBC驱动包

esproc-bin-***.jar      集算器基础包

json-20240303.jar     解析JSON格式串

report-***.jar    润乾报表核心包

本例使用嵌入式报表版DQL,所以还要将报表版DQLJDBC驱动包datalogic-***.jar和数据库驱动包hsqldb-2.7.3-jdk8.jar一并放到加载目录下(已有可跳过)。

如果DQL连接了其他物理数据源,需要添加对应数据库的驱动jar包。本例HSQL驱动包获取路径为报表[安装根目录]\common\jdbc

 

(二) 准备配置文件

准备两个配置文件raqsoftConfig.xmlnlqConfig.xml

l  raqsoftConfig.xml,文件名可自定义

raqsoftConfig.xml中配置NLQ JDBC使用的DQL数据源和授权信息,具体配置如下:

<Runtime>

<DBList>

<DB name="DQL4Orders">

<property name="url" value="jdbc:datalogic://?lmd=E:\files\dql\orders.lmd&amp;dct=&amp;vsb=&amp;db.url=jdbc:hsqldb:hsql://127.0.0.1/orders&amp;db.driver=org.hsqldb.jdbcDriver&amp;db.user=sa&amp;db.password=&amp;db.type=13" />

<property name="driver" value="com.datalogic.jdbc.LogicDriver" />

</DB>

……

</DBList>

<Report>

<license>E:\licenses\defaultlicensetrial_zh.xml</license>

… …

</Report>

</Runtime>

参数说明

1)  DBList 配置DQL数据源信息。

本例用的是报表嵌入式DQL JDBC。使用安装包自带的元数据文件orders.lmd,获取路径为报表[安装根目录]\report\services\orders\conf。如果需要更具体的了解DQL JDBC的参数配置,可参考嵌入式DQL部署集成

NLQ 使用嵌入式DQL JDBC时,config会使用NLQ 的配置。

 

2)  license 需使用“汉语查询”功能点的润乾报表授权。按绝对路径和类路径次序查找授权文件。

 

l  nlqConfig.xml,文件名不可修改,需放在类路径

nlqConfig.xml中配置NLQ,具体内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<Config version="1">

<NLQList>

<NLQ name ="nlq1">

<DB>DQL4Orders</DB>

<MetaData>dql\orders.nlq</MetaData>

<RaqsoftConfig>raqsoftConfig.xml</RaqsoftConfig>

</NLQ>

<NLQ name = "nlq2">

<DB>DQLdemo</DB>

<MetaData>E:\files\dql\demo.nlq</MetaData>

</NLQ>

</NLQList>

<DefaultRaqsoftConfig>D:\raqsoft\report\config\raqsoftConfig.xml</DefaultRaqsoftConfig>

</Config>

参数说明

1)  NLQList  NLQ列表。

2)  NLQ  可以配置多个,多个时添加多条< NLQ />

3)  DB  DQL数据源名称,数据源在raqsoftConfig.xml中配置。

4)  MetaData  词典文件.nlq,由汉语查询设计器生成。

5)  RaqsoftConfig  配置文件,如前面的raqsoftConfig.xml

6)  DefaultRaqsoftConfig  缺省配置文件NLQ下有RaqsoftConfig配置时,以NLQ下的为准,未配置时,则使用DefaultRaqsoftConfig

注意:MetaDataRaqsoftConfigDefaultRaqsoftConfig支持类路径和绝对路径。

 

(三)  NLQ JDBC的连接方法

驱动 com.nlq.datalogic.jdbc.NLQDriver

URL jdbc:datalogic:nlq://?nlq=[]

URL参数说明:

  nlq:配置文件nlqConfig.xmlNLQ结点的name

 

(四) java中调用NLQ接口

public class QueryNlq{

  public static void main(String[] args) throws Exception {

//建立连接

Class.forName("com.nlq.datalogic.jdbc.NLQDriver");

Connection nlqCon= DriverManager.getConnection("jdbc:datalogic:nlq://?nlq=nlq1");

//用【query 汉语语句】的方式做自然语言查询

ResultSet rs = nlqCon.createStatement().executeQuery("query 人口8万至1000万的城市");

/*rs里得到多个结果,每个JSON格式的结果都包含一个MQL语句

其中一个JSON串是{mql:"select 人口 as 人口,城市编码,城市名称,省份 from CITY where ((人口>=8*10000) AND (人口<=1000*10000))",on:null,from:[{table:"城市", field:[{name:"人口", dim:null,select:true,sum:null,where:"人口 8 1000 万之间"},{name:"城市编码", dim:"CITY",select:true,sum:null,where:null},{name:"城市名称", dim:null,select:true,sum:null,where:null},{name:"省份", dim:"Province",select:true,sum:null,where:null}],by:null}],error:""}

JSON串的详细说明参考汉语查询的结果说明

*/

…….

//拆解JSON串,获取MQL语句,nlq jdbc执行MQL语句就能查得数据。如下执行第一个结果的MQL语句,获得最终数据的结果集rs2:

String mql = "select 人口 as 人口,城市编码,城市名称,省份 from CITY where ((人口>=8*10000) AND (人口<=1000*10000))";

ResultSet rs2 = nlqCon.createStatement().executeQuery(mql);

//关闭NLQ JDBC连接

nlqCon.close();

  }

…….

}

}