首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传一个文件到solr,并添加我自己的参数

上传一个文件到solr,并添加我自己的参数
EN

Stack Overflow用户
提问于 2012-08-06 20:55:05
回答 2查看 2K关注 0票数 0

我想上传一个文件(一些微软word文档),例如到solr,但我想添加我自己的字段到这个上传,如上传它的人的userId或一些标签。文件的内容必须是可解析和可搜索的,并且exta参数应该作为字段添加。因此,我在schema.xml中添加了以下定义

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.1">
  <types>
   <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
   <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
    <!-- A general text field that has reasonable, generic
         cross-language defaults: it tokenizes with StandardTokenizer,
     removes stop words from case-insensitive "stopwords.txt"
     (empty by default), and down cases.  At query time only, it
     also applies synonyms. -->
    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
 </types>


 <fields>
    <field name="documentId" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="text" type="string" indexed="true" stored="false" multiValued="true"/>
<dynamicField name="metadata_*" type="text_general" indexed="true" stored="true" multiValued="true"/>
 </fields>

 <uniqueKey>documentId</uniqueKey>
 <defaultSearchField>text</defaultSearchField>
 <solrQueryParser defaultOperator="AND"/>

</schema>

我的solrconfig.xml的相关部分现在看起来像这样:

代码语言:javascript
复制
  <equestHandler name="/update/extract" 
                startup="lazy"
                class="solr.extraction.ExtractingRequestHandler">
 <lst name="defaults">
   <str name="fmap.content">text</str>
   <str name="lowernames">true</str>
   <str name="fmap.documentId">documentId</str>
   <!-- also tried with
   <str name="fmap.literal.documentId">documentId</str>
   and
   <str name="literal.documentId">documentId</str>
   -->
   <str name="uprefix">metadata_</str>

   <!-- capture link hrefs but ignore div attributes -->
   <str name="captureAttr">true</str>
   <str name="fmap.a">links</str>
   <str name="fmap.div">ignored_</str>
  </lst>
  </requestHandler>

但是,无论我尝试使用此命令的哪种组合:

代码语言:javascript
复制
java -Durl=http://localhost:9090/solr/update/extract?documentId=test -jar post.jar somedoc.pdf

代码语言:javascript
复制
java -Durl=http://localhost:9090/solr/update/extract?literal.documentId=test -jar post.jar somedoc.pdf

我总是丢失documentId的必填字段

向罗纳德致敬

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-04 03:56:30

我也有同样的问题,问题是我的字段名为"documentId“。当字段名以"Id“(大写I)结尾时,检查必填字段时出现问题

看另一个问题,它帮助我解决了这个问题:Solr - Missing Required Field

我将我的字段名改为"id“,现在一切都好了。这真的毫无意义,可能已经把一些人完全逼疯了。

票数 0
EN

Stack Overflow用户

发布于 2012-08-06 21:19:34

您有0个文档的原因可能是您没有指定documentId (或任何其他必填字段),因此索引失败(请查看日志)。

你必须只是休耕示例:http://wiki.apache.org/solr/ExtractingRequestHandler#Getting_Started_with_the_Solr_Example

要将任何字段添加到使用Tika索引的文档中,必须使用文本参数。在您的情况下,它可能是:

代码语言:javascript
复制
&literal.userId=123&literal.documentId=doc1

如果您有其他问题,请询问(添加可能添加更多细节:您的命令外观,日志中的错误)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11828718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档