[英]What is index in Apache solr?
我能够将pdf文件上传到solr
,我能够搜索这些文件。 但是solr
索引是什么? 当我上传pdf文件时它将如何进行索引编制?
这是我用来上传pdf文件的代码
ContentStreamUpdateRequest up
= new ContentStreamUpdateRequest("/update/extract");
up.addFile(fileName);
up.setParam("literal.id", solrId);
up.setParam("literal.first_name", "apachesolr");
up.setParam("literal.last_name", "cookbook");
up.setParam("literal.age", "30");
up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
solrServer.request(up);
下面是我的schema.xml
<field name="first_name" type="string" indexed="true" stored="true" required="true"/>
<field name="last_name" type="string" indexed="true" stored="true" required="true"/>
<field name="age" type="int" indexed="true" stored="true" required="true"/>
<field name="created_at" type="date" indexed="true" stored="true"/>
<field name="updated_at" type="date" indexed="true" stored="true"/>
<field name="id" type="string" indexed="true" stored="true" required="true"/>
当我在搜索pdf中的任何内容时。 结果看起来像这样
SolrDocument[{
last_modified=Fri Oct 17 08:17:38 IST 2003,
author=Mark Roth, Eduardo Pelegri-Llopart,
title=[JSP 2.0 Specification, Final Release],
content_type=[application/pdf],
keywords=JSP,
age=30,
last_name=cookbook,
first_name=apachesolr,
id=jsp-2_0-fr-spec.pdf
}]
如何获得标题,作者,关键字......等?
你误解了搜索引擎中的文档概念。 Document是一组带有相应值的命名字段 。 您应该始终明确设置每个字段。 首先,使用Solrj尝试以下代码:
CommonsHttpSolrServer solr = new CommonsHttpSolrServer("http://localhost:8983/solr");
for(int i = 0; i < 1000; ++i) {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("title", "My Favorite book");
doc.addField("author", "Kevin");
doc.addField("content", "Bla bla bla");
solr.add(doc);
}
solr.commit();
这段代码创建了新的SolrInputDocument
并添加了3个字段 - “title”,“author”和“content”(注意:所有这些字段都应该在schema.xml中定义,只是为了让Solr知道如何索引和存储这些字段),然后它将新的doc添加到事务( solr.add(doc)
)并最终提交更改。 这是使用Solr的基本方法。
在这个正常流程中,您应该自己从文档中提取文本 。 例如,您可以将Tika用于此目的。 这是最灵活和细粒度的方式。
您要做的是使用新的Solr功能 - 内容提取 。 如果我理解正确,你试图用setParams()
设置字段是错误的。 setParams()
只设置请求参数,然后将其转换为URL参数,让Solr知道如何处理请求本身 。 据我所知,这种方式你不能自己设置字段。 相反, /update/extract
处理程序将尝试按文件的MIME类型提取内容 , 查找有关文档属性的提示并将其用作字段 (请注意,Solr使用Tika库提取文档内容)。 因此,如果您真的想使用/update/extract
处理程序,请尝试按照此示例操作, 而不更改与请求参数对应的行,并检查生成的字段 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.