我曾经使用以下网址上传和索引Word文档。
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)的名称。
答案 0 :(得分:0)
在Solr中,默认的可搜索字段为“内容”。这就是为什么你得到的结果,因为它与内容匹配。首先创建一个自定义字符串字段(例如docname),修改 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
无论如何,您必须将文档名称存储在单独的字段中。