DIH

DIH内存溢出:

  在使用DIH时,容易报内存溢出错误。可以通过设置jvm大小来解决。设置方法如下:

  在tomcat\bin\startup.bat 加入SET JAVA_OPTS=-Xms128m -Xmx1024m 配置 这里设置的是1024M,根据情况可以适量增大 

datasource

<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost/dbname" user="db_username" password="db_password" />

entity:

 

  •  name(必需的):name是唯一的,用以标识entity
  • processor:只有当datasource不是RDBMS时才是必需的。默认值是 SqlEntityProcessor
  • transformer:转换器将会被应用到这个entity上,详情请浏览transformer部分。
  • pk:entity的主键,它是可选的,但使用“增量导入”的时候是必需。它跟schema.xml中定义的 uniqueKey没有必然的联系,但它们可以相同。
  • rootEntity:默认情况下,document元素下就是根实体了,如果没有根实体的话,直接在实体下 面的实体将会被看做跟实体。对于根实体对应的数据库中返回的数据的每一行,solr都将生成一个document。

 

SqlEntityProcessor:

 

  • query (required) :sql语句

  • deltaQuery : 只在“增量导入”中使用

  • parentDeltaQuery : 只在“增量导入”中使用

  • deletedPkQuery : 只在“增量导入”中使用

  • deltaImportQuery : (只在“增量导入”中使用) . 如果这个存在,那么它将会在“增量导入”中导入phase时代替query产生作用。这里有一个命名空间的用法${dataimporter.delta.}详 情请看solr1.4.

 

RegexTransformer:正则表达式转换器

org.apache.solr.handler.dataimport.RegexTransformer,属于默认包,包名可以忽略。

 

<entity name="foo" transformer="RegexTransformer"
    query="select full_name , emailids from foo" />
<field column="full_name" />
<field column="firstName" regex="Mr(/w*)/b.*" sourceColName="full_name" />
<field column="lastName" regex="Mr.*?/b(/w*)" sourceColName="full_name" />
<field column="mailId" splitBy="," sourceColName="emailids" />
</entity>
属性

RegexTransfromer只对属性中有regex或者splitBy的域起作用。所有的属性我们列在下面。

  • regex : 这是要匹配的正则表达式。regex和splitBy两者必有其一。如果没有,这个域将不会被正则表达式转换器处理。

  • sourceColName : 正则表达式起作用的列。. 如果这个这个属性不存在,那么source将等同域target。

  • splitBy : 如果正则表达式,是被用来分割一个字符串以获得多个值,那么使用这个。

  • replaceWith : 跟 属性regex一起使用。相当于我们平常使用的方法new String().replaceAll(, )

这里,属性‘regex’和‘sourceColName’是转换器自定义的属性。它从resultSet中读取域‘full_name’的值,然 后转换它,并将结果分别传给‘firstName’和‘lastName’。所以,尽管查询结果只返回一列“full_name”,但solr document依然可以获得额外的两个域“firstName”和‘lastName’。

域'emailids'  是一个用逗号分隔着的值。 所以,我们最终可以从emailids得到一个以上的emial id。mailid 在solr中应该被定义为多值的。

 

日期格式转换器

这里有一个内嵌的转换器,叫做DateFormatTransformer(日期格式转换器) ,这个在将字符型时间转换成java.util.Date的类型的时候是很有用的。

<field column="date" xpath="/RDF/item/date" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss" />

日期格式转换器只对带有属性“dateTimeFormat”的域才起作用。其他属性如下所示。

  • dateTimeFormat : 转换使用的格式。这个必须服从java的SimpleDateformat。

  • sourceColName : 要使用日期转换的列。如果没有设定这个值,那么源列跟目标域的名称是一样的。

数字格式转换器

能将一个字符串转换成一个数字,使用的是java中类NumberFormat。例子:

<field column="price" formatStyle="number" />

默认情况下,类Numberformat使用系统的本地格式去转换一个字符串,如果你需要指定一个不同的本地类型的话,你可以像下面这样指定。例 子:

<field column="price" formatStyle="number" locale="de-DE" />
posted @ 2014-08-27 17:35  勿妄  阅读(617)  评论(0编辑  收藏  举报