2013-03-19 67 views
0

我已經在Solr的索引的PDF,當我做了一個名爲勃林格文本查詢,我的XML響應如下XML響應不包含周圍,我搜索的字的文本

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">1</int> 
    <lst name="params"> 
     <str name="q">text:BOEHRINGER</str> 
    </lst> 
    </lst> 
<result name="response" numFound="1" start="0"> 
    <doc> 
     <str name="author">cjessen</str> 
     <arr name="content_type"> 
      <str>application/pdf</str> 
     </arr> 
     <str name="id">2</str> 
     <date name="last_modified">2012-05-07T17:09:32Z</date> 
    </doc> 
</result> 
</response> 

怎麼辦我得到的內容將返回以及作爲XML響應的一部分的文件名?應該在schema.xml中添加什麼字段,以便我可以查看PDF搜索到的文本,這些文本是我搜索的單詞,它是XMl響應的BOEHRINGER部分。

回答

1

檢查field mapping屬性。

該文件的內容通常映射到文本字段,默認情況下不存儲該文本字段。
檢查ExtractingRequestHandler,默認爲文件內容爲fmap.content=text,可以覆蓋。
如果您只想查看突出顯示的查詢內容,則可以使用solr的highlight功能。

對於文檔的標題,您需要在索引文檔時傳遞標題,或者應該有由Tika提供的內置文件名字段作爲您可以使用的元數據字段。

0
<!-- Solr Cell Update Request Handler 

    http://wiki.apache.org/solr/ExtractingRequestHandler 

    --> 
<requestHandler name="/update/extract" 
       startup="lazy" 
       class="solr.extraction.ExtractingRequestHandler" > 
    <lst name="defaults"> 
    <!-- All the main content goes into "text"... if you need to return 
     the extracted text or do highlighting, use a stored field. --> 
      <str name="fmap.content">text</str> 
      <str name="lowernames">true</str> 
      <str name="uprefix">ignored_</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> 

這是我的solrconfig.xml文件。 schema.xml文件中的所有字段都有索引並且存儲= true。我仍然試圖將我的迴應的文本部分跟隨它周圍的文字。如果sanjay被搜查,那麼我想我的部分resposne是「桑傑是6英尺高」,也「sanjay是一個好孩子」。假設這兩個句子都存在於被編入索引的文件中。

<fieldtype name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" 
          generateNumberParts="1" catenateWords="1" 
          catenateNumbers="1" catenateAll="0"/> 
        <filter class="solr.LowerCaseFilterFactory"/> 
        <filter class="solr.EnglishPorterFilterFactory" 
          protected="protwords.txt"/> 
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" 
          ignoreCase="true" expand="true"/> 
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
        <filter class="solr.WordDelimiterFilterFactory" enerateWordParts="1" 
          generateNumberParts="1" catenateWords="0" 
          catenateNumbers="0" catenateAll="0"/> 
        <filter class="solr.LowerCaseFilterFactory"/> 
        <filter class="solr.EnglishPorterFilterFactory"  protected="protwords.txt"/> 
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
    </analyzer> 
</fieldtype> 

    And the field is <field name="text" type="text_general" indexed="true" stored="true"  multiValued="true"/>