Как получить имя файла индексных документов Word в Apache Solr?

Раньше я загружал и индексировал документы Word, используя следующий URL-адрес.

java -Durl=http://localhost:8983/solr/update/extract?literal.id=1 -Dtype=application/word -jar post.jar microfost_det.doc

Когда я запрашиваю индекс Solr, он возвращает XML как ..

  http://localhost:8983/solr/collection1/select?q=microfost&wt=xml&indent=true

Ответ был:

<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
<lst name="params">
<str name="indent">true</str>
<str name="q">microfost</str>
<str name="_">1389196238897</str>
<str name="wt">xml</str>
</lst>
</lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="id">1</str>
<date name="last_modified">1601-01-01T00:00:00Z</date>
<str name="author">fazlan </str>
<str name="author_s">fazlan </str>
<arr name="content_type">
<str>application/msword</str>
</arr>
<arr name="content">
<str> 


This is a MSWord document. Microfost.

</str>
</arr>
<long name="_version_">1456677821213573120</long></doc>
</result>
</response>

Теперь моя проблема в том, что мне нужно имя документа, содержащего запрошенный текст «microfost», то есть microfost_det.doc..

Можно ли получить имя файла Word (то есть filename.doc), который содержит запрошенный текст..

.


person Good Elephant    schedule 08.01.2014    source источник


Ответы (1)


В Solr полем поиска по умолчанию является «content». Вот почему вы получаете результат, поскольку он соответствует содержанию. Сначала создайте пользовательское строковое поле (например, имя документа), изменяющее файл schema.xml.

Затем перезапустите экземпляр Solr. Выполните следующую команду, чтобы обновить документ Solr.

curl 'http://localhost:8983/solr/update?commit=true' -H 'Content-type:application/json' -d '[{"id":"1","docname":{"set":"microfost_det.doc"}}]'

После этого выполните следующий запрос, и вы получите результат.

http://localhost:8983/solr/collection1/select?q=docname:microfost*&wt=xml&indent=true

В противном случае при извлечении документа выполните следующую команду

java -Durl="http://localhost:8983/solr/update/extract?literal.id=1&literal.docname=microfost_det.doc" -Dtype=application/word -jar post.jar microfost_det.doc

В любом случае, вы должны сохранить название документа в отдельном поле.

person buddy86    schedule 09.01.2014
comment
Спасибо ... но как я могу указать имя каждого документа ... То есть я использовал команду, которую я упомянул в своем кратком изложении вопроса, как .... * .doc ... Поскольку у меня есть более 1000 документов для индексации, Можно ли дать каждому имени документа - person Good Elephant; 10.01.2014