2016-10-31 10 views
0

SOLRにはCellというモジュールがあります。 Tikaを使用して文書からコンテンツを抽出し、SOLRで索引付けします。SOLR Cellはどのようにドキュメントコンテンツを追加しますか?

https://github.com/apache/lucene-solr/tree/master/solr/contrib/extractionの出典から、Cellは生の抽出されたテキスト文書テキストを「内容」というフィールドに配置すると結論づけます。フィールドはSOLRによって索引付けされますが、格納されません。ドキュメントをクエリすると、「コンテンツ」が表示されません。

私のSOLRインスタンスにはスキーマがありません(私はデフォルトのスキーマをそのまま残しました)。

デフォルトのUpdateRequestHandler/solr/corename/updateへのPOST)を使用して、同様の種類の動作を実装しようとしています。 POSTリクエストが行く:この方法で追加書類を

<add commitWithin="60000"> 
    <doc> 
     <field name="content">lorem ipsum</field> 
     <field name="id">123456</field> 
     <field name="someotherfield_i">17</field> 
    </doc> 
</add> 

は、コンテンツフィールドはをインデックス化し、を格納しています。これはクエリの結果に表示されます。私はそれが欲しくない。それはスペースの無駄です。

Cellがドキュメントを追加する方法について私は何が分かりませんか?

答えて

0

セルコードは実際には文書にcontentという内容を追加しますが、content_text_に置き換えた組み込みフィールド変換ルールがあります。スキーマレスSOLRでは、_text_は格納用としてマークされていません。ルールがSolrContentHandler.addField()内の次の行によって呼び出され

:paramsはオブジェクト内

String name = findMappedName(fname); 

fmap.content_text_として扱われるべきであるというルールがあります。それは以下のフラグメントがありますデフォルトでcorename\conf\solrconfig.xml、どこから来ている:

<requestHandler name="/update/extract" 
       startup="lazy" 
       class="solr.extraction.ExtractingRequestHandler" > 
    <lst name="defaults"> 
    <str name="lowernames">true</str> 
    <str name="fmap.meta">ignored_</str> 
    <str name="fmap.content">_text_</str> <!-- This one! --> 
    </lst> 
</requestHandler> 

一方、corename \ confに\のmanaged_schemaであり、ラインの:

<field name="_text_" type="text_general" multiValued="true" indexed="true" stored="false"/> 

は、そして、それは全体の話です。

2

フィールドに内容を保存しない場合は、フィールドをstored = "false"に設定する必要があります。

スキーマレスモードを使用しているため(スキーマがあり、新しいフィールドが追加されたときに動的に生成されたばかりです)、フィールドを変更するにはSchema APIを使用する必要があります。あなたはdo this by issuing a replace-field commandをすることができます

curl -X POST -H 'Content-type:application/json' --data-binary '{ 
    "replace-field":{ 
    "name":"content", 
    "type":"text", 
    "stored":false } 
}' http://localhost:8983/solr/collection/schema 

することはでき/collection/schema/fieldsに対する要求を発行することによってsee the defined fields

+0

私はクエリを実行しました。 'content'フィールドはそこにありますが、' stored = false'はありません。 '_text_'という別のフィールドには' stored = false'があります。しかし、私はCellソースで '_text_'への参照を見つけることができませんでした... –

関連する問題