我想在Solr 8.1的搜索结果中获取文件名,但是它不起作用。
请注意:我确实在这里找到了所有相关问题,但是它们要么已经过时,要么对我不起作用。
我刚开始使用Solr 8.1,在完成了本教程之后,我开始在无模式模式下创建一个新集合。
我从tika-data-config.xml
复制了/example/example-DIH/solr/tika/conf/
并将其命名为my_tika-data-config
。然后,我将行从<field column="file" name="id"/>
更改为<field column="file" name="fileName"/>
:
<dataConfig>
<dataSource type="BinFileDataSource"/>
<document>
<entity name="file" processor="FileListEntityProcessor" dataSource="null"
baseDir="${solr.install.dir}/example/exampledocs" fileName=".*pdf"
rootEntity="false">
<field column="file" name="fileName"/>
<entity name="pdf" processor="TikaEntityProcessor"
url="${file.fileAbsolutePath}" format="text">
<field column="Author" name="author" meta="true"/>
<!-- in the original PDF, the Author meta-field name is upper-cased,
but in Solr schema it is lower-cased
-->
<field column="title" name="title" meta="true"/>
<field column="dc:format" name="format" meta="true"/>
<field column="text" name="text"/>
</entity>
</entity>
</document>
</dataConfig>
然后我编辑了solorconfig.xml
以使用DataImportHandler
:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<str name="config">C:/Solr/solr-8.1.1/example/example-DIH/solr/tika/conf/my_tika-data-config.xml</str>
</requestHandler>
在managed-schema.xml
文件中,我像这样添加了字段“ fileName”:
<field name="fileName" type="string" indexed="true" stored="true"/>
我还添加了以下几行:
<lib dir="${solr.install.dir:../../../..}/contrib/dataimporthandler/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
到solrconfig.xml
,以消除dataimport类的错误。
最后,我使用命令(Windows)重新索引了10个测试pdf文件:
java -jar -Dc=test_collection3 -Dauto example\exampledocs\post.jar Test_PDFs\*
查询某些内容并过滤文件名时,将得到以下内容而不是文件名:
{
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"fl":"fileName",
"_":"1562669763731"}},
"response":{"numFound":10,"start":0,"docs":[
{},
{},
{},
{},
{},
{},
{},
{},
{},
{}]
}}
有人可以告诉我我哪里做错了吗?