mysql - 将数据导入处理程序添加到 ColdFusion 2016 Solr

标签 mysql solr coldfusion dih

我正在尝试在我们的 ACF 2016 安装附带的 Solr 版本上从我们的 MySQL 数据库中索引表。 Adobe 的文档指出我需要使用 Solr 的数据导入处理程序来执行此操作,他们说这需要修改 solrconfig.xml 并创建一个 data-config.xml 文件。

这不能按原样工作。进一步阅读使我相信我需要:

  1. 下载一个solr-dataimporthandler.jar
  2. 复制 ColdFusion 的 MySQL 连接器,以便 Solr 可以使用它
  3. 编辑 solrconfig.xml 以说明这些更改
  4. 创建一个data-config.xml

到目前为止,我是否正确?因为我一直在尝试这样做,并且当我尝试重新加载我的集合时,CF 管理员给我一个错误“处理‘重新加载’操作时出错”。 Solr 管理员本身说:

org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Error loading class 'org.apache.solr.handler.dataimport.DataImportHandler'.

我对此了解不多,但我觉得 Solr 无法加载我添加的两个 jar 文件中的一个或两个。如果是这样的话,那么:

  1. 我应该编辑什么solrconfig.xml?我一直在研究我设置的特定集合中的那个,以便将我们的数据库编入索引。
  2. 我需要这两个 jar 吗?我应该把它们放在哪里?我在 C:\ColdFusion2016\cfusion\jetty\lib 和我在 C:\ColdFusion2016\cfusion\jetty\multicore\lib 设置的自定义库中尝试过它们.
  3. 一些来源(不是 Adob​​e)说我需要将 lib 指令添加到 solrconfig.xml,而其他人则说 Solr 的“root”目录中的 lib 中的任何 jar 都会自动添加。这两种方法我都试过了,但出现了上述错误。
  4. 还有其他来源说我需要将它们添加到我的类路径中。如果不需要,我会犹豫要不要在我们的服务器上执行此操作。

我知道这个问题无处不在,但我让自己很困惑,我真的很感激任何帮助或插入正确的方向。我希望我只是在某个地方犯了一些愚蠢的错误,因为我认为它不应该这么复杂!

请注意,Solr 本身运行良好,我设置的一些 PDF 索引目录的集合正在运行,没有问题。其他集合中的 solrconfig.xml 文件都没有任何请求处理程序或引用数据导入处理程序的库。

提前致谢!感谢您阅读所有这些内容! :-)

最佳答案

好吧,我终于让它工作了。正如所怀疑的那样,根本问题是 Solr 没有找到 MySQL 连接器和数据导入处理程序 jar。为了任何其他可能偶然发现这一点的人的利益,这就是我所做的。我们使用 ACF 附带的 Adob​​e ColdFusion 2016 和 Solr 5.2.1。

  1. 您确实需要 MySQL 连接器和数据导入处理程序 jar。我使用了一个名为 solr-dataimporthandler-5.2.1.jar 的版本匹配数据导入处理程序,我下载了它 from here .确保在"file"部分选择 jar 文件以开始下载。对于 MySQL 连接器,我只是复制了来自 ColdFusion 的那个。我的名为 mysql-connector-java-5.1.38-bin.jar,对于我的 CF 安装,它位于 C:\ColdFusion2016\cfusion\lib。

  2. 我了解到 Solr 会自动查找位于特定位置的 jar。无需 lib 指令或任何文件编辑。对我来说,我在我的 Solr 实例中创建了一个名为“lib”的文件夹,该文件夹位于 C:\ColdFusion2016\cfusion\jetty\multicore 并将 jar 放在那里。因此,新 jars 的完整路径是 C:\ColdFusion2016\cfusion\jetty\multicore\lib,但您不需要编辑任何文件来说明这一点。

  3. 您确实需要编辑 solrconfig.xml 以说明数据导入处理程序。对我来说,唯一能让它起作用的方法是为每个集合编辑 solrconfig.xml。编辑任何其他各种版本都行不通。因此,对于我之前在 CF Admin 中创建的名为“dmfile”的集合,要编辑的 solrconfig.xml 位于 C:\ColdFusion2016\cfusion\jetty\multicore\collections\vfs_dmfile\conf。我将以下内容添加到其他请求处理程序所在部分的文件中:

    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
          <str name="config">data-config.xml</str>
        </lst>
    </requestHandler>
    

这就是我需要为 solrconfig.xml 做的所有事情。

  1. 在同一个目录中,创建一个 data-config.xml 文件。这是我的:

<dataSource type="JdbcDataSource" 
    driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/myDatabase" 
    user="myUsername" 
    password="myPassword"/>\
<document>
    <entity name="dmfile" query="SELECT filename, ObjectID from dmfile WHERE status = 'approved'">
        <field column="filename" name="filename" />
        <field column="ObjectID" name="uid" />
        <field column="status" name="dmfile_status" />
    </entity>
</document>

开始时,我试图让事情变得简单。请注意实体名称如何与集合名称相匹配。我将数据库表 (ObjectID) 中的唯一 ID 与 Solr 具有的标准唯一 ID 字段 (uid) 进行了匹配。 “列”是我们数据库中的列,“名称”是我希望 Solr 使用的任何名称。您的数据库当然可能会有所不同。

  1. 最后我编辑了 schema.xml,也在同一目录中:

    <field name="filename" type="string" indexed="true"  stored="true" required="false" />
    <field name="dmfile_status" type="string" indexed="true"  stored="true" required="false" />
    

“名称”属性需要与您在 data-config.xml 中设置的任何内容相匹配。请注意,我没有为 uid 添加字段——默认情况下它已经在 schema.xml 中。

  1. 我在 Windows 服务器上,所以我转到 services.msc 并重新启动了 ColdFusion 2016 Add-On Services 服务。 注意: 重新启动 ColdFusion 本身对我不起作用。我需要重新启动 ColdFusion 2016 附加服务,仅此而已。

  2. 我终于可以重新加载我的收藏了,并且(更重要的是)我可以在 http://localhost:8989/solr/#/ 的 Solr 管理中浏览核心。 .我可以在“核心选择器”下拉列表中选择我的 dmfile 核心,并且能够选择 DataImportHandler 而不会出现错误。

这就是我让它为我工作的方式。我发现我需要为我希望连接到 MySQL 的每个核心重复步骤 3-6。一些文档指出您至少可以在全局级别执行第 3 步,但这对我来说根本不起作用。

无论如何,我花了很长时间才弄清楚所有这些,所以希望这能帮助其他像我一样被困住的 CFers。

关于mysql - 将数据导入处理程序添加到 ColdFusion 2016 Solr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51716006/

相关文章:

mysql - 在 64 位系统中,32 位列占用的空间比 64 位列少?

php - 在 codeigniter 中为不同的用户分配不同的角色?

mysql - 使用 MySQL 作为源的 Solr DataImportHandler - 处理 json 类型列

iis - 通过 SSL 在 IE 上使用 CFContent

coldfusion - 由于循环内 if 语句中函数调用内的结构文字而引发错误

hibernate - HQL语句中外键的数字参数

mysql - Oracle Developer 在 PHPmyAdmin 中工作,语法错误

MySQL LEFT JOIN SUM 不包括 0

solr - 如何修复 : Error CREATEing SolrCore 'gettingstarted' : Unable to create core

java - 无法加载编解码器 'Lucene410'