让我们在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
我将寻找官方形象以获得此版本。
要么是我想要的版本过旧,要么就是没有。
由于在使用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找不到。
用相对路径运行,好像可以动。奇怪。
确认Solr是否成功启动
http://<ホスト>:8983/solr/default/admin/
确认能够访问并打开Solr的管理页面。
intra-mart的配置设置
系统管理员界面
Solr连接配置
在「系统环境搭建」页面中打开「Solr连接设置」,进行「新建」操作。
在搜索/索引服务器中指定的值,可以认为是从刚才在Solr启动确认界面中打开的管理界面URL中去掉“admin”后的值。
按下「测试连接」按钮,确认能够连接成功。
当连接成功时,您可以在Solr服务器端看到日志,以确认此事。
docker logs <Solrコンテナ名>
Solr租户连接配置
将通过”系统环境搭建”设置的Solr服务器分配给租户。
如果不分配,将没有搜索服务器可供租户使用,导致搜索时出现错误。
租户的屏幕 de
可以通过在协作文件库中注册文件等方式,将搜索对象添加进去。
如果将IMBox和工作流设定为搜索对象的话,也是可以的。
执行JobNet。
我将在Jobnet管理页面上执行“IM-ContentsSearch”的“重新创建爬虫”。
如果不做这件事,文件将永远不会被添加/反映到Solr的索引中,请注意。
执行全文搜索
通过位于画面右上方的搜索栏执行搜索。使用关键词“提案”进行搜索的结果如下所示。
故障排除
为什么我什么也搜索不到?
首先,确认是否有索引。
点击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コンテナ>
如果搜索”提案”这个词,会显示出以下日志。
我们将注意力放在以下参数上。
我们将检查删除了fq=(sids_allowed: …)部分后是否能够得到搜索结果,因为它是针对sids_allowed字段发出的筛选查询。
http://:8983/solr/default/select/的参数的内容
如果能得到搜索结果,那就说明没有权限。如果即使这样也得不到结果的话,那就意味着没有与搜索关键词匹配的索引。
尽管如此…
考虑到我想要使用最新的东西的想法,所以我正在考虑将其替换为Solr6.1。
有一种预感,通过更改managed-schema和solrConfig.xml可能会成功。