- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 Solr 的 DataImportHandler 为 Oracle 数据库中的一些文档编制索引,除了将 Oracle 日期列正确读入我的文档外,一切正常。
我的 Solr 模式中的字段定义为
<field name="release_date" type="date" indexed="true" stored="true" multiValued="false"/>
我首先尝试在我的 DataImportHandler 中对日期列执行基本的选择语句,但所有日期都使用不正确的时间值编制索引。例如,数据库中的日期为 Jan. 12, 2004 09:28 AM (EST) 被索引为:
<date name="release_date">2004-01-12T05:00:00Z</date>
所有日期值都有正确的日期,但它们的时间都为 T05:00:00Z。我对正在发生的事情的最佳猜测是它正在从数据库中读取午夜时间并将其转换为 UTC。如果是这种情况,我希望正确的值为 T14:28:00Z。
为什么它不提取数据库列的时间部分?我知道有一个 transformer for dates随 DIH 一起提供,但我不太清楚它应该如何工作。我也试过做
<field column="RELEASE_DATE" name="release_date" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'" />
在 DIH 中,但这似乎没有任何改变。
最佳答案
这是与最后一个答案一起使用的完整代码(为了更加清晰)。
在您的 data-config.xml 文件中,从数据库中读取日期并将其转换为时间戳:
select cast(STRT_DT as timestamp) as STRT_DTTS from DATES
放入 DataImportHandler 实体,如下所示:
<entity name="startDate" transformer="script:startDateTransform"
query="select cast(STRT_DT as timestamp) as STRT_DTTS from DATES" >
<field column="STRT_DTTS" name="STRT_DT" />
</entity>
此查询将返回 oracle.sql.TIMESTAMP,但不会直接映射到日期。因此需要脚本转换器。因此我们引入了script:startDateTransform
。在同一个 data-config.xml 中,您可以像这样插入 JavaScript:
function startDateTransform(row){
// Get the timestamp and convert it to a date
var dateVal = row.get("STRT_DTTS").dateValue();
// Put the correct date object into the original column
row.put("STRT_DTTS", dateVal);
return row;
}
这里我们将时间戳转换为日期,更新列值并返回包含新信息的行。
字段STRT_DT
:
<field column="STRT_DTTS" name="STRT_DT" />
现在应该包含正确的日期。
关于java - 在 Solr DataImportHandler 中从 Oracle 日期获取正确的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10111517/
当我运行完全导入时,它只索引 1 个文档。在日志中,我看到它处理了大部分记录(约 300 条记录)。我在日志中看不到任何错误。为什么不索引查询的所有结果? 这是我的 data-config.xml
我试图说服 solr 执行 sqlite 数据库的批量导入。我将 DataImportHandler 配置为通过 jdbc 成功打开该数据库,并且可以使用 wget http://localhost:
我试图说服 solr 执行 sqlite 数据库的批量导入。我遵循 Solr-Wiki 的所有说明。我将 DataImportHandler 配置为通过 jdbc 成功打开该数据库,我可以开始导入 h
在 Solr DIH data-config.xml 中,使用 JOIN 在主实体中通过查询获取尽可能多的字段是否更好,例如: 或使用单独的子实体,如: 最佳答案 一些可以帮助您做出决定的
我们的 solr 索引根据计划进行刷新,并通过 DataImportHandler 完全导入根据需要任意刷新。我们有几次由于各种原因导入失败。 如何在使用 DataImportHandler 执行导入
我正在使用 Solr 4.6.0并尝试使用 CachedSqlEntityProcessor 导入我的数据,但不知何故我最终得到了一个 ClassCastException . 架构
Solr 1.4 数据导入处理程序的增量导入语法允许最多 4 个查询(查询、deltaImportQuery、deltaQuery 和 parentDeltaQuery),但我不清楚“查询”查询的用法
我已经建立了一个像这样的 solr 索引: https://wiki.apache.org/solr/DataImportHandler 我在 data-config.xml 中使用了类似的内容:
我在尝试使用 DataImportHandler 从 MySQL 导入位置数据时遇到问题。对我的子实体之一的查询是: SELECT [...] AS data, AsText(data_geo) AS
我想在 DataImportHandler 的帮助下从 mysql 数据库获取数据,这样我就可以创建索引。现在我已经配置了我的 Solr 实例,以便它可以在 Tomcat(示例管理页面)上运行,但是如
我正在使用 Solr 3.3.0使用 Tomcat 6.0.26。我能够成功安装 Solr,甚至能够使用 http:/localhost:8084/solr/admin 访问其 Web 界面。 现在我
有没有办法使用返回的值创建动态列(作为键/值)名称 从查询抛出 DIH (DataImportHandler)? 例如: ?? 最佳答案 使用 ScriptTransformer —— 例
我的数据库上的一列(与我的 SOLR 存储库同步)是 XML,看起来像: 2013-12-31T06:00:00 在 SOLR 中,它存储在 type="string" 中。场,一切正常。
我一直在尝试按照 this 设置数据导入处理程序 (Solr 4.1)教程并尝试了之前帖子中建议的解决方案,例如 Configure DIH in multicore solr并将数据导入 jar 添
我尝试使用 DataImportHandler 在云模式下使用 Solr 来索引我的 MySQL 数据库,以下是它使用 _default 配置集的配置。 solr-7.3.0\server\solr\
我是 Solr 的新手,我正在努力导入一些不包含 ID 字段的 XML 数据,尽管它是必需的,因为它说我的 schema.xml: 一个 XML 示例: ... 架构.xml: id 此时
假设我有两种 XML 文档类型,A 和 B,如下所示: 答: First Number 1 Second Number
为我第一次尝试使用 SOLR DIH 索引数据库数据设置一个简单的测试数据库。不幸的是,我每次都从完全导入中得到以下结果: 0 15 data-config.xml full-impor
我是 Solr 的新手。我成功地通过 DIH 从我的 sql 数据库中索引了数据。现在我想导入 xml 文件并通过 DIH 对它们进行索引,但它不起作用!我的 data-config.xml 如下所示
我正在为 SOLR 和 SQL 数据导入而苦恼。我需要索引来自 2 个表的数据,第一个是“masters”,第二个是“details”。这两个表之间的关系是 1 对 n 的,它由两个表上的列 m_id
我是一名优秀的程序员,十分优秀!