Индексирование документов PDF с помощью Cloudera Search
Я пытался проиндексировать документы PDF с помощью Cloudera Search aka Apache Solr. Сначала я смог проиндексировать твиты твиттера. Позже я попытался проиндексировать PDF-файлы. Я создал соответствующую коллекцию, используя solrctl
со схемой по умолчанию. Файл морфлайна, который я использовал (здесь я замаскировал IP-адрес zkHost)...
solrLocator : {
# Name of solr collection
#collection : collection1
collection : pdfs
# ZooKeeper ensemble
#zkHost : "127.0.0.1:2181/solr"
zkHost : "xxx.xxx.xxx.xxx:2181,xxx.xxx.xxx.xxx:2181/solr"
# The maximum number of documents to send to Solr per network batch (throughput knob)
# batchSize : 100
}
morphlines : [
{
id : morphlinepdfs
importCommands : ["org.kitesdk.**", "org.apache.solr.**"]
commands : [
{ detectMimeType { includeDefaultMimeTypes : true } }
{
solrCell {
solrLocator : ${solrLocator}
captureAttr : true
lowernames : true
capture : [id, title, author, content, content_type, subject, description, keywords, category, resourcename, url, last_modified, links]
parsers : [ { parser : org.apache.tika.parser.pdf.PDFParser } ]
}
}
{ generateUUID { field : id } }
{ sanitizeUnknownSolrFields { solrLocator : ${solrLocator} } }
{ loadSolr: { solrLocator : ${solrLocator} } }
]
}
]
Поля метаданных PDF присутствуют в файле schema.xml, например...
<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="subject" type="text_general" indexed="true" stored="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>
<field name="comments" type="text_general" indexed="true" stored="true"/>
<field name="author" type="text_general" indexed="true" stored="true"/>
<field name="keywords" type="text_general" indexed="true" stored="true"/>
<field name="category" type="text_general" indexed="true" stored="true"/>
<field name="resourcename" type="text_general" indexed="true" stored="true"/>
<field name="url" type="text_general" indexed="true" stored="true"/>
<field name="content_type" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="last_modified" type="date" indexed="true" stored="true"/>
<field name="links" type="string" indexed="true" stored="true" multiValued="true"/>
Но в выводе запроса solr / select я получаю только поля контента и типа контента. Как получить все метаданные в запросе интерфейса Solr? Нужно ли изменять schema.xml или соответствующий файл морфлин? Также я могу индексировать поля внутри содержимого PDF?
Команда, которую я использовал для индексации файла PDF:
hadoop --config /etc/hadoop/conf.cloudera.yarn jar /usr/lib/solr/contrib/mr/search-mr-1.0.0-cdh5.8.2-job.jar org.apache.solr.hadoop.MapReduceIndexerTool -D 'mapred.child.java.opts=-Xmx500m' --log4j /usr/share/doc/search-1.0.0+cdh5.8.2+0/examples/solr-nrt/log4j.properties --morphline-file /usr/share/doc/search-1.0.0+cdh5.8.2+0/examples/solr-nrt/test-morphlines/solrPDF.conf --output-dir hdfs://xxxxxx:8020/user/root/outdir --verbose --go-live --zk-host xxxxx:2181/solr --collection pdfs hdfs://xxxxxx:8020/user/root/indir
Заранее спасибо.
1 ответ
Я нашел проблему. На самом деле используемый мной PDF-файл не содержит метаданных. Я пробовал с другими файлами PDF и получил результаты. Надеюсь, что это помогает другим.