代码改变世界

Endeca-Deployment Template-Inserting a custom pipeline

2011-09-24 11:12  AnyKoro  阅读(254)  评论(0编辑  收藏  举报

配置一个记录指定符

部署会包括支持baselinepartial index更新。为了支持partial更新,一个应用必须包括一个记录指定符,该说明符是索引中唯一记录标识(译者注:类似于主键的感觉)的属性。

更多关于记录指定符属性的细节,可参看Endeca Forge Guide

当配置你的应用时, 为具有唯一值的记录定义一个属性。例如,在参考的sample_wine_data项目中,数据集中的每个记录都会包括一个唯一的Wine ID

如何使用记录指定符属性

1、  Developer Studio中打开Property对话框。

2、  选中”User for record spec”标签前的复选框.

 

 

Forge标志位

为了减少需要将pipeline整合到deployment template中的配置数量,一个标准的deployment template应用会使用一个标志位缩写集去运行基本(primary update Forge)和局部更新Forgepartial update Forge)处理程序。

由于deployment template已经指定了目录结构和文件前缀,所以下列标志位用于覆写pipeline的输入和输出组件,标志位为读或写数据指定了合适的目录和前缀。

 

基本Forge标志位

 

输入记录转换器

记录转换器会加载源数据

 

首先,让我们快速看一下,deployment template是如何处理样例数据的。样例wine应用在[appdir]/test_data/baseline目录中包括了一个样例数据集。当处理该样例wine数据时,在load_baseline_test_data.bat脚本中会复制前所说目录中的内容到[appdir]/data/incoming/目录,同时在EAC中设置标志位。该标志位(名为baseline_data_ready)会表明数据提取处理的deployment template脚本已经处理完毕并且数据可随时开始处理。一旦该标志位被设置,Deployment templatebaseline更新处理程序会在运行primary Forge process之前,将这些文件复制到[appdir]/data/processing/目录。

 

当使用一个默认的deployment template应用时,查看一些[appdir]/data/processing/目录中导入的提取数据,对于所有的输入记录转换器是很有必要的。当运行primary forge process时,Deployment template通过指定—inputDir标志位去自动处理。该标志位使用正确的deployment template路径(这里是[appdir]/data/processing/目录)去覆写任何指向特定输入转换器的绝对路径。--inputDir标志设定为相对路径,那么指定的相对路径会作为输入目录。

 

因此任何记录转换器组件的URL属性需要为[appdir]/data/incoming/目录中的特定文件或者子目录指定相对路径。(记住:在Forge运行前,incoming目录中的文件和子目录会被deployment template复制到处理文件夹中。)

 

例如,如果一个单一提取文件(名为data.txt)在运行baseline之前会被复制到[appdir]/data/incoming/目录,那么数据的输入记录转换器的URL属性就应该指定为data.txtURL

 

对于更复杂的部署,例如,当多个文本提取文件在运行baseline更新之前被复制到[apdir]/data/incoming/extracted_data/目录,一个被配置为读取这些文件的单一输入记录转换器的URL属性会指向extracted_data/*.txt

 

维度转换器

指向forge--inputDir标志位会覆写维度转换器的输入URL

 

由于项目的维度经常会和其他配置文件一起被存在[appdir]/config/pipeline目录中,所以deployment template会在运行Forge处理前复制这些文件到[appdir]/data/processing/目录。维度转换器中指定的URL应该遵循和那些输入记录转换器中所说的规则是一样。指定相对于—inputDir目录的维度XML文件URL。在大多数情况中,为主维度转换器(Dimensions.xml)指定URL也是一样简单, 该主维度转换器是使用Developer Studio的项目模板创建的默认“维度”转换器。

 

更复杂的部署(比如包含多维度转换器或外部维度文件传递)应该保证维度XML文件在forge处理之前会被复制到[appdir]/data/incoming/目前中。

 

索引转换器

由于--outputPrefix—outputDir标志位都已包括了,所以deployment template会覆写任何指向索引转换器“URL”的值和“输出前缀”属性的值。

因此,大多情况都不需要调整这些属性。

Agraph部署,你索引转换器中的ROLLOVER元素的PROP_NAME属性必须被指定。它应该被设定成一个属性,该属性是在你数据集中唯一的记录标示符。对于标准的Forge部署,ROLLOVER元素应该在数据分离器pipeline中指定。

 

注意:Agraph部署的分区数量不需要在pipeline中设置,因为该值会被作为一个forge命令行参数被指定,在pipeline中用该参数覆写该值。然而,将被分割数据上的rollover键必须如前述的那样指定。

 

输出记录转换器

输出记录转换器经常被用作产生调试或状态信息。默认情况,被写入文件的地址会使用—outputDir标志位赋予。

 

然而在许多情况中,对于这些文件来说,被指向同一地址作为Forge输出文件是不希望的。

 

在这些案例中,一个输出记录转换器可以通过勾选”Maintain State”复选框代替用指定—stateDir标志位进行配置。

 

 

现在任何由输出记录转换器生成的文件都会被写入[appdir]/data/state/目录中

注意:输出文件名称仍然需要在记录转换器的URL属性中指定。--outputPrefix标志位只是覆写索引转换器输出文件名称,而不是输出记录转换器的文件名称。

 

维度服务器

--stateDir标志位将覆写所有维度服务器组件的URL值,并且将在[appdir]/data/state/目录中存放任何自动生成的状态文件。

 

常见错误

该节为通常收到的错误提供了解决疑难问题的信息。

未能找到Pipeline.epx

如果Forge运行失败,请检查日志([appdir]/logs/baseline/err.forge)以确保Forge可以再正确的位置找到pipeline.epx文件

 

丢失配置文件

这个是更常见也是更难检测到得错误。因为所有pipeline都是由Endeca Developer Studio生成的(通常含有一个Pipeline.epx文件),所以Forge process无法发现该文件时不太可能的,除非是放置在了错误的目录中。但是,如果XML配置文件有一个与deployment template[appname]不同的前缀,那么这些文件就不会被复制到[appdir]/data/forge_output/,[appdir]/data/dgidx_output/[appdir]/data/dgraphs//dgraph_input/目录中。

所有处理程序会成功执行并完成,但任何由这些XML文件指定的配置信息(例如,搜索接口,商业规则,分类键等等)将会从产生结果的MDEX Engine中消失。为了修正这个问题,检查位于[appdir]/config/pipeline/下的XML文件,并确保都有正确的前缀。也检查之前提到的那些目录,以确保这些XML文件都被正确复制。

 

MDEX Engine无法启动

如果一个MDEX Engine无法启动,就检查[appdir]/logs/dgraphs/[dgraph]/[dgraph].log中的关于Dgraph的日志。如果该日志指明Dgraph无法启动是因为找不到记录指定符,就根据文档中曾提到的“为你的项目创建一个唯一的记录指定符属性”操作一下。

 

记录转换器无法打开文件

如果一个记录转换器无法为输入或输出找到或打开一个说明符文件的话,就会出现另外的常见错误。在这里,Forge错误日志([appdir]/logs/baseline/err.forge)应该指出哪个文件或目录没有找到。修正这个问题,确保由记录转换器指定文件或目录与由deployment template应用建立的目录结构是相关的。注意:如果没有为给定输入转换器勾选”Require Data”属性的话,这种错误会被掩盖,因为Forge将会以警告错误记录,而不是一个致命错误。