Я хочу получить имя файла в результатах поиска в 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
file Я добавил поле «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
, чтобы избавиться от ошибки с импортом данныхучебный класс.
И, наконец, я переиндексировал свои 10 тестовых pdf-файлов с помощью команды (Windows):
java -jar -Dc=test_collection3 -Dauto example\exampledocs\post.jar Test_PDFs\*
Когда я что-то запрашиваю и фильтрую для fileName, вместо имен файлов я получаю следующее:
{
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"fl":"fileName",
"_":"1562669763731"}},
"response":{"numFound":10,"start":0,"docs":[
{},
{},
{},
{},
{},
{},
{},
{},
{},
{}]
}}
Может кто-нибудь сказать, пожалуйста, где я допустил ошибку?