向coldfusion 2016 solr添加数据导入处理程序

2ic8powd  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(326)

我正在尝试从我们的mysql数据库索引表,该数据库的solr版本与我们的ACF2016安装一起提供。adobe的docs声明我需要使用solr的数据导入处理程序来完成这个任务,他们说这需要修改 solrconfig.xml 创造一个 data-config.xml 文件。
这不起作用。进一步阅读使我相信我需要:
下载 solr-dataimporthandler.jar 复制coldfusion的mysql连接器以便solr可以使用它
编辑 solrconfig.xml 来解释这些变化
创建 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文件中的一个或两个。如果是这样,那么:
什么 solrconfig.xml 我应该编辑吗?我一直在为数据库建立索引的特定集合中的一个工作。
我需要这两个jar吗?我应该把它们放在哪里?我试过了 C:\ColdFusion2016\cfusion\jetty\lib 在一个我在 C:\ColdFusion2016\cfusion\jetty\multicore\lib .
一些消息来源(不是adobe)说我需要将lib指令添加到 solrconfig.xml ,而其他人则表示solr的“root”目录中的lib中的任何jar都将自动添加。我两种方法都试过了,得到了上面描述的错误。
还有其他消息说我需要将它们添加到我的类路径中。如果我们不需要的话,我很犹豫是否在我们的服务器上这样做。
我知道这个问题到处都是,但我已经把自己弄糊涂了,我真的很感激任何帮助或推动在正确的方向。我希望我只是在某个地方犯一些愚蠢的错误,因为我不认为事情应该这么复杂!
请注意,solr本身运行良好,我设置的一些集合的pdf索引目录工作正常,没有问题。没有一个 solrconfig.xml 其他集合中的文件具有引用数据导入处理程序的任何请求处理程序或lib。
提前谢谢!我很感激你读到这些!:-)

1yjd4xko

1yjd4xko1#

好吧,我终于成功了。正如所怀疑的,根问题是solr没有找到mysql连接器和数据导入处理程序jar。为了其他可能无意中发现这一点的人的利益,以下是我所做的。我们使用acf附带的adobe coldfusion 2016和solr 5.2.1。
您确实需要mysql连接器和数据导入处理程序jar。我使用了一个版本匹配的数据导入处理程序solr-dataimporthandler-5.2.1.jar,并从这里下载了它。确保在“文件”部分选择jar文件以开始下载。对于mysql连接器,我只是复制了一个来自coldfusion的连接器。我的名为mysql-connector-java-5.1.38-bin.jar,对于我的cf安装,它位于c:\coldfusion2016\cfusion\lib。
我了解到,如果jar在某个特定的地方,solr会自动寻找。不需要lib指令或任何文件编辑。对我来说,我在solr示例中创建了一个名为“lib”的文件夹,它位于c:\coldfusion2016\cfusion\jetty\multicore,我把jars放在那里。因此,新jar的完整路径是c:\coldfusion2016\cfusion\jetty\multicore\lib,但是您不需要编辑任何文件来说明这一点。
您确实需要编辑solrconfig.xml来说明数据导入处理程序。对我来说,唯一的办法就是为每个集合编辑solrconfig.xml。编辑任何其他版本都不起作用。因此,对于我以前在cf admin中创建的名为“dmfile”的集合,要编辑的solrconfig.xml位于c:\coldfusion2016\cfusion\jetty\multicore\collections\vfs\u 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做的全部工作。
在同一目录中,创建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)相匹配。”“column”是我们数据库中的列,“name”是我希望solr使用的任何名称。当然,您的数据库可能会有所不同。
最后,我编辑了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" />

“name”属性需要匹配您在data-config.xml中设置的任何内容。注意,我没有为uid添加字段——默认情况下,它已经在schema.xml中了。
我在windows服务器上,因此我转到services.msc并重新启动了coldfusion 2016附加服务。注意:重启coldfusion本身对我不起作用。我需要重新启动coldfusion 2016附加服务,仅此而已。
最后,我可以重新加载我的收藏,而且(更重要的是)我可以在solr admin中浏览内核http://localhost:8989/Solr/#/。我可以在“核心选择器”下拉列表中选择dmfile核心,并且可以选择dataimporthandler而不会出错。
我就是这样让它为我工作的。我发现我需要为我希望连接到mysql的每个核心重复步骤3-6。一些文档指出,您至少可以在全局级别执行步骤3,但这对我根本不起作用。
不管怎么说,我花了很长时间才弄清楚,所以希望这能帮助其他像我一样被困的CFER。

相关问题