Индексировать содержимое файла PDF с помощью Apache Solr
Я использую Solrрасширение php для взаимодействия с Apache Solr. Я индексирую данные из базы данных. Я также хотел проиндексировать содержимое внешних файлов (таких как PDF, PPTX).
Логика для индексации: Предположим,schema.xml
определены следующие поля:
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="created" type="tlong" indexed="true" stored="true" />
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="filepath" type="text_general" indexed="false" stored="true"/>
<field name="filecontent" type="text_general" indexed="false" stored="true"/>
Отдельная запись в базе данных может / не может иметь сохраненный файл.
Следовательно, мой код для индексации следующий:
$post = stdclass object having the database content
$do,c = new SolrInputDocument();
$doc->addField('id', $post->id);
$doc->addField('name', $post->name);
....
....
$res = $client->addDocument($doc);
$client->commit();
Далее я хочу добавить содержимое файла PDF в тот же документ, что и выше.
Этоcurl
код:
$ch = curl_init('
http://localhost:8010/solr/update/extract?');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, array('myfile'=>'@'.$post->filepath));
$result= curl_exec ($ch);
Но, думаю, я что-то упустил. Я прочиталдокументация, но я не могу найти способ извлечь содержимое файла и затем добавить его в существующий документ solr вfield: filecontent
РЕДАКТИРОВАТЬ # 1: Если я попытаюсь установитьliteral.id=xyz
в запросе curl создается новый документ solr, имеющийid=xyz
, Я не хочу создавать новый документ Solr. Я хочу, чтобы содержимое pdf было проиндексировано и сохранено в виде поля в ранее созданном документе solr.
$doc = new SolrInputDocument();//Solr document is created
$doc->addField('id', 98765);//The solr document created above is assigned an id=`98765`
....
....
$ch = curl_init('
http://localhost:8010/solr/update/extract?literal.id=1&literal.name=Name&commit=true');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, array('myfile'=>'@'.$post->filepath));
$result= curl_exec ($ch);
Я хочу вышеуказанный документ solr (id = 98765
) иметь поле, в котором содержимое pdf индексируется и сохраняется.
Но запрос cURL (как указано выше) создает другой новый документ (сid = 1
). Я не хочу этого