让我们在Docker上使用intra-mart IM-ContentsSearch来部署Solr

简述

对于使用intra-mart的IM-ContentsSearch,建议安装Apache Solr。这需要使用docker来完成。

首先在DockerHub上寻找基础镜像。

在intra-mart Accel Platform 2016 Spring (Maxima) 的发布说明中,对于 5.1.2.2. Apache Solr 系统要求的描述如下:

5.1.2.2.1. 支持版本
Apache Solr 3.6.x

我将寻找官方形象以获得此版本。

https hub.docker.com _ solr .png

要么是我想要的版本过旧,要么就是没有。

由于在使用intra-mart时搭建Cassandra时也经历了类似的不过时的情况,所以我已经习惯了。

我认为早点与开发总部内部人员或主办方的人员一起公开会比较好。

按照公式流程进行

根据设置指南,使用安装工具,在ant任务中可立即运行Jetty服务器上的Solr。

把这段内容写在Dockerfile中。

FROM java:8-jdk-alpine

ENV SOLR_SETUP_DIR /usr/local/solr

RUN apk --no-cache --virtual=dependencies add wget unzip && \
    wget "http://www.intra-mart.jp/download/product/iap/im_contents_search/solr_setup.zip" && \
    mkdir $SOLR_SETUP_DIR && \
    unzip solr_setup.zip -d $SOLR_SETUP_DIR && \
    apk del dependencies

WORKDIR $SOLR_SETUP_DIR


CMD ["./setup.sh", "jetty.start"]

EXPOSE 8983

在构建它后,通过`docker run`命令,Solr将在Jetty服务器上开始运行。

docker run -d -p 8983:8983 <ビルドしたイメージ名>

绝对路径和相对路径

Jetty(用于开发的)服务器可以通过以下方式启动:

如果是Linux操作系统的情况下,执行以下命令:/usr/local/solr/setup.sh jetty.start

然而,使用上述的Dockerfile时,会出现如下错误。

在/usr/local/solr/setup.sh:第6行:build/lib/ant/bin/ant找不到。

1.png

用相对路径运行,好像可以动。奇怪。

2.png

确认Solr是否成功启动

http://<ホスト>:8983/solr/default/admin/

确认能够访问并打开Solr的管理页面。

Solr admin page.png

intra-mart的配置设置

系统管理员界面

Solr连接配置

在「系统环境搭建」页面中打开「Solr连接设置」,进行「新建」操作。

在搜索/索引服务器中指定的值,可以认为是从刚才在Solr启动确认界面中打开的管理界面URL中去掉“admin”后的值。

設定値値備考接続名solr-docker任意の値検索サーバhttp://<ホスト>:8983/solr/default既定のコア名がdefaultなので索引サーバhttp://<ホスト>:8983/solr/default既定のコア名がdefaultなので

按下「测试连接」按钮,确认能够连接成功。

当连接成功时,您可以在Solr服务器端看到日志,以确认此事。

docker logs <Solrコンテナ名>
3.png

Solr租户连接配置

将通过”系统环境搭建”设置的Solr服务器分配给租户。

如果不分配,将没有搜索服务器可供租户使用,导致搜索时出现错误。

テナント管理.png

租户的屏幕 de

可以通过在协作文件库中注册文件等方式,将搜索对象添加进去。

如果将IMBox和工作流设定为搜索对象的话,也是可以的。

执行JobNet。

我将在Jobnet管理页面上执行“IM-ContentsSearch”的“重新创建爬虫”。

如果不做这件事,文件将永远不会被添加/反映到Solr的索引中,请注意。

ジョブネット管理.png

执行全文搜索

通过位于画面右上方的搜索栏执行搜索。使用关键词“提案”进行搜索的结果如下所示。

全文検索.png

故障排除

为什么我什么也搜索不到?

首先,确认是否有索引。

点击Solr管理界面上的“搜索”按钮,确认至少存在一个索引。

q=:是一个将所有内容匹配的查询。如果要匹配title为hoge的内容,只需写上title:hoge即可。

当数量为0时,将返回以下结果。请检查作业网络是否执行了爬取操作,并确认其结果。

<response>
  <script/>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">2</int>
    <lst name="params">
      <str name="hl.snippets">5</str>
      <str name="hl.useFastVectorHighlighter">true</str>
      <str name="echoParams">all</str>
      <str name="start">0</str>
      <str name="q">*:*</str>
      <str name="rows">10</str>
      <str name="indent">on</str>
      <str name="version">2.2</str>
    </lst>
  </lst>
  <result name="response" numFound="0" start="0"/>
</response>

虽然有索引,但没有任何匹配结果。

据我了解,IM-ContentsSearch系统通过在搜索查询中添加用户角色和所属公司等ACL信息来进行权限相关的搜索。

因此,由于没有权限,尽管有索引,但可能无法匹配。

根据发送到Solr服务器的搜索查询进行推测。

docker logs <Solrコンテナ>

如果搜索”提案”这个词,会显示出以下日志。

4.png

我们将注意力放在以下参数上。

我们将检查删除了fq=(sids_allowed: …)部分后是否能够得到搜索结果,因为它是针对sids_allowed字段发出的筛选查询。

http://:8983/solr/default/select/的参数的内容

如果能得到搜索结果,那就说明没有权限。如果即使这样也得不到结果的话,那就意味着没有与搜索关键词匹配的索引。

尽管如此…

考虑到我想要使用最新的东西的想法,所以我正在考虑将其替换为Solr6.1。

有一种预感,通过更改managed-schema和solrConfig.xml可能会成功。

广告
将在 10 秒后关闭
bannerAds