zoukankan      html  css  js  c++  java
  • DIH

    DIH内存溢出:

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

      在tomcatinstartup.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" />
  • 相关阅读:
    【tomcat8】consider increasing the maximum size of the cache
    *更新*无需root,一条命令强制全屏模式
    处理SFTP服务器上已离职用户,设置为登录禁用状态
    一个Web 持续集成工作实践
    tensorflow实战笔记(18)----textCNN
    train loss相关问题
    Spark学习(4)----ScalaTest
    scala学习(4)---Array定长数组操作
    spark学习(3)---集合
    spark学习(2)---RDD
  • 原文地址:https://www.cnblogs.com/a198720/p/3939997.html
Copyright © 2011-2022 走看看