2012-03-02 59 views
3

我是solr的新手。我在使用ContentStreamUpdateRequest將索引添加到solr時將字段/元數據添加到pdf文件時遇到了問題。由於必須使用字面參數來添加字段I試過如下:使用solrj向pdf文件添加字段

public static void indexFilesSolrCell(String fileName,String solrId,int i,String name,String Category,String loc,String locat) 
        throws IOException, SolrServerException { 
    //... 
    ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract"); 
    File f1 = new File(fileName); 
    up.addFile(new File(fileName)); 
    up.setParam("literal.id",solrId); 
    up.setParam("literal.name",name); 
    up.setParam("literal.url_file", loc); 
    up.setParam("literal.location",locat); 
    up.setParam("literal.Category",Category); 
    //.. 
} 

PDF文件被收錄在Solr的,但問題是,不是所有領域都使用literals.The以下領域已經創建了創建:

  1. ID
  2. 類別

    雖然它並不像創建url_file或類似路徑位置任何領域。* 有時 *它不會創建領域類別
    由於我曾經走過的,任何隨機字段可以使用文本參數創建一個metadata.Why創建的是,領域,如ID甚至blah_s總是創建但當我嘗試像上面提到的隨機場,solr不會創建?
    我們是否還必須在其他地方聲明這些隨機場?
    任何幫助,不勝感激。
    更新:不調用方法up.setParam(「literal.myField」)修改schema.xml來創建一個新的字段?

+0

你的'schema.xml'是怎麼樣的? – javanna 2012-03-02 14:37:22

+0

我實際上使用了apache solr3.5.0中提供的例子,通過導入它的war。我注意到只有那些在這個xml文件中定義的fieldss可以與「literal」一起使用。我無法找到「schema.xml」文件,但我可以通過schema.jsp在瀏覽器中訪問它: ?HTTP://本地主機:8080/solr的/管理/文件/的contentType =文本/ XML;字符集= UTF-8&文件= schema.xml中。我如何修改schema.xml?以下是已經定義的字段:id,類別,名稱和許多其他我不使用的字段。 – user776193 2012-03-05 07:46:01

回答

3

那是因爲你正在使用Solr的例子,其中不包含url_filelocation領域。您可以在example/solr/conf下找到schema.xml。我建議你稍微清理一下,只保留你需要的字段,因爲這個模式包含很多你不需要的字段。

的blah_s場被創建,因爲您正在使用的架構包含以下定義:

<dynamicField name="*_s" type="string" indexed="true" stored="true"/> 

它的後綴_s一個充滿活力的領域,這意味着與後綴每場將Solr的被視爲stringindexedstored

要修改schema.xml,您需要在本地打開它並更改xml文件,然後重新加載Solr。請記住,在模式更改之後,您需要重新編制索引,重新運行您在問題中粘貼的代碼。

+0

非常感謝,現在工作:) – user776193 2012-03-05 12:02:18