2013-06-19 87 views
0

在這裏,它的進口後,我的文檔,從MongoDB的:SOLR - 與對鍵/值索引文件

documents": [ 
    { 
     "uid": [ 
     1 
     ], 
     "body": [ 
     "" 
     ], 
     "field_section": [ 
     { 
      "nid": "3" 
     } 
     ], 
     "node_panels": [ 
     { 
      "use_node_panel": false 
     } 
     ], 
     "field_urltitle": [ 
     { 
      "value": null 
     } 
     ], 
     "field_test_content": [ 
     { 
      "value": null 
     } 
     ], 
     "type": [ 
     "book" 
     ], 
     "changed": [ 
     1354017880 
     ], 
     "nodewords_nodetype_override": [ 
     false 
     ], 
     "field_content_extract": [ 
     { 
      "nid": null 
     } 
     ], 
     "created": [ 
     1320142582 
     ], 
     "taxonomy": [ 
     { 
      "796": { 
      "tid": 796, 
      "vid": 2, 
      "name": "Roman Français", 
      "description": "", 
      "weight": "0" 
      } 
     } 
     ], 
     "vid": [ 
     595023 
     ], 
     "field_comment": [ 
     { 
      "value": null 
     } 
     ], 
     "field_description": [ 
     { 
      "value": "<p>\"Je ne sais pas, écrit l'auteur, si quelqu'un avant moi a jamais tenté de réunir la totalité des souvenirs qu'il a gardés de ses dix ou onze premières années. J'ai cherché à les reproduire non seulement sous leur forme objective d'actes, d'attitudes ou de jugements, mais aussi avec la saveur subjective que ces faits eurent pour moi à l'époque. Car ce qui importe le plus, ici, ce n'est pas tant l'exactitude historique des faits rapportés (encore que je me sois efforcé de la respecter), c'est leur retentissement, la trace qu'ils laissent dans la vie intérieure de l'enfant, puis dans celle de l'adulte, jusqu'à sa mort sans doute\". </p>", 
      "format": "7" 
     } 
     ], 
     "field_content_continue_with": [ 
     { 
      "nid": null 
     } 
     ], 
     "field_content_celebrity": [ 
     { 
      "nid": "591932", 
      "type": "50" 
     } 
     ], 
     "field_content_day": [ 
     { 
      "value": null, 
      "timezone": "Europe/Paris", 
      "timezone_db": "Europe/Paris", 
      "date_type": "datestamp" 
     } 
     ], 
     "field_evene_modified": [ 
     { 
      "value": null 
     } 
     ], 
     "field_content_video": [ 
     { 
      "nid": null 
     } 
     ], 
     "field_fnac_url": [ 
     { 
      "url": "http://livre.fnac.com/a4069141/Quentin-Jacares-Le-passe-interieur", 
      "title": null, 
      "attributes": [] 
     } 
     ], 
     "format": [ 
     0 
     ], 
     "log": [ 
     "Created/updated by FeedsNodeProcessor" 
     ], 
     "field_external_category": [ 
     { 
      "value": "a:2:{i:0;s:23:\"Littérature française\";i:1;s:0:\"\";}" 
     } 
     ], 
     "field_publication_date": [ 
     { 
      "value": 1320102000, 
      "timezone": "Europe/Paris", 
      "timezone_db": "Europe/Paris", 
      "date_type": "datestamp" 
     } 
     ], 
     "picture": [ 
     "files/user_pictures/picture-1.png" 
     ], 
     "field_content_more": [ 
     { 
      "nid": null 
     } 
     ], 
     "field_image": [ 
     { 
      "fid": "200052", 
      "uid": "1", 
      "filename": "591933.gif", 
      "filepath": "files/book/591933.gif", 
      "filemime": "image/gif", 
      "filesize": "33725", 
      "status": "1", 
      "timestamp": "1320142582", 
      "origname": "decitre-import.gif", 
      "list": null, 
      "data": [] 
     } 
     ], 
     "field_selection": [ 
     { 
      "value": null 
     } 
     ], 
     "promote": [ 
     1 
     ], 
     "last_comment_timestamp": [ 
     1320142586 
     ], 
     "teaser": [ 
     "" 
     ], 
     "field_content_anecdote": [ 
     { 
      "nid": null 
     } 
     ], 
     "revision_timestamp": [ 
     1354017880 
     ], 
     "language": [ 
     "" 
     ], 
     "comment": [ 
     2 
     ], 
     "field_page_number": [ 
     { 
      "value": 293 
     } 
     ], 
     "page_title": [ 
     false 
     ], 
     "field_ads_keywords": [ 
     { 
      "value": null 
     } 
     ], 
     "data": [ 
     "a:5:{s:14:\"picture_delete\";i:0;s:14:\"picture_upload\";s:0:\"\";s:13:\"form_build_id\";s:37:\"form-195606921d7a71b9a51bf3bcdc018f38\";s:5:\"fbuid\";s:15:\"100000792647737\";s:9:\"nodewords\";a:9:{s:8:\"abstract\";a:1:{s:5:\"value\";s:0:\"\";}s:9:\"canonical\";a:1:{s:5:\"value\";s:0:\"\";}s:9:\"copyright\";a:1:{s:5:\"value\";s:0:\"\";}s:11:\"description\";a:1:{s:5:\"value\";s:0:\"\";}s:8:\"keywords\";a:1:{s:5:\"value\";s:0:\"\";}s:13:\"revisit-after\";a:1:{s:5:\"value\";s:1:\"1\";}s:6:\"robots\";a:2:{s:5:\"value\";a:6:{s:9:\"noarchive\";i:0;s:8:\"nofollow\";i:0;s:7:\"noindex\";i:0;s:5:\"noodp\";i:0;s:9:\"nosnippet\";i:0;s:6:\"noydir\";i:0;}s:11:\"use_default\";i:0;}s:8:\"dc.title\";a:1:{s:5:\"value\";s:0:\"\";}s:8:\"location\";a:2:{s:8:\"latitude\";s:0:\"\";s:9:\"longitude\";s:0:\"\";}}}" 
     ], 
     "field_external_id": [ 
     { 
      "value": 9782310010054 
     } 
     ], 
     "field_publication_first": [ 
     { 
      "value": null, 
      "timezone": "Europe/Paris", 
      "timezone_db": "Europe/Paris", 
      "date_type": "datestamp" 
     } 
     ], 
     "field_prize": [ 
     { 
      "nid": null, 
      "label_1": "", 
      "label_2": "" 
     } 
     ], 
     "field_content_critique": [ 
     { 
      "nid": null 
     } 
     ], 
     "field_book_citation": [ 
     { 
      "nid": null 
     } 
     ], 
     "title": [ 
     "Le passé intérieur" 
     ], 
     "_id": [ 
     "org.bson.types.ObjectId:50b4aca6a6937d876782cbc3" 
     ], 
     "field_fnac_id": [ 
     { 
      "value": null 
     } 
     ], 
     "name": [ 
     "admin" 
     ], 
     "path": [ 
     "livres/livre/quentin-jacares-le-passe-interieur-591933.php" 
     ], 
     "field_isbn": [ 
     { 
      "value": 9782310010054 
     } 
     ], 
     "field_price": [ 
     { 
      "value": "20.72" 
     } 
     ], 
     "revision_uid": [ 
     0 
     ], 
     "tnid": [ 
     0 
     ], 
     "field_author_v2": [ 
     { 
      "value": null 
     } 
     ], 
     "field_subtitle": [ 
     { 
      "value": "Une enfance dans la Belgique d'avant la guerre" 
     } 
     ], 
     "field_label": [ 
     { 
      "nid": "120600" 
     } 
     ], 
     "comment_count": [ 
     0 
     ], 
     "nid": [ 
     591933 
     ], 
     "moderate": [ 
     0 
     ], 
     "field_site": [ 
     { 
      "url": null, 
      "title": null, 
      "attributes": false 
     } 
     ], 
     "field_v2_full": [ 
     { 
      "value": null 
     } 
     ], 
     "sticky": [ 
     0 
     ], 
     "field_v2_id": [ 
     { 
      "value": null 
     } 
     ], 
     "translate": [ 
     0 
     ], 
     "field_content_photo": [ 
     { 
      "nid": null 
     } 
     ], 
     "opengraph_meta": [ 
     { 
      "title": "", 
      "description": "", 
      "image": "http://www.evene.fr/sites/all/themes/evene/images/logos/logo-evene.png", 
      "type": "", 
      "url": "", 
      "latitude": "", 
      "longitude": "", 
      "street-address": "", 
      "locality": "", 
      "region": "", 
      "postal-code": "", 
      "country-name": "", 
      "email": "", 
      "phone_number": "", 
      "fax_number": "", 
      "site_name": "Evene.fr" 
     } 
     ] 
    } 
    ] 

我would'like噸配置索引與鍵和值的所有領域。

我試圖與

<field name="field_description" type="text" indexed="true" stored="true" multiValued="true"/> 

但結果是空的一個子項的對象。

結果:

uid : 1 
body : 
spell : Le passé intérieur 
body_exact : 
type : book 
vid : 595023 
picture : files/user_pictures/picture-1.png 
teaser : 
title : Le passé intérieur 
title_exact : Le passé intérieur 
title_exact_ : Le passé intérieur 
_id : 50b4aca6a6937d876782cbc3 
path : livres/livre/quentin-jacares-le-passe-interieur-591933.php 
comment_count : 0 
nid : 591933 
_version_ : 1438259731338625024 
timestamp : Wed Jun 19 10:42:45 CEST 2013 
score : 1.0 

有你的解決方案做

+0

你可以指定哪些子你在說什麼? – JHS

+0

例如:field_description-> value –

回答

0

考慮到你給的例子,好像你導出你的MongoDB的JSON格式。所以如果你想將JSON導入Solr,默認情況下它不會處理嵌套值。您需要使用正確的聲明才能正常工作。例如,在你的榜樣,你需要有對field_description字段的格式如下:

{ 
"field_description":{ 
    "value":"Je ne sais pas, ecrit l'auteur, si quelqu'un avant moi a jamais tente de reunir la totalite des souvenirs qu'il a gardzs de ses dix ou onze premieres annees.", 
    "format":7 
} } 

如果你不使用JSON格式,但另一位進口商爲您的MongoDB/Solr的連接,請註明哪一個是這樣我可以進一步幫助你。

+0

It'an從Drupal輸出到Mongodb。這種格式不能改變。 –

0

A液:

使用變壓器使用JavaScript的每一行

dataconfig:對同一文檔

<dataSource name="EveneMongo" type="MongoDataSource" database="evene" /> 
<document name="node"> 
    <entity name="livre" processor="MongoEntityProcessor" 
    query="{'status':1, 'type':'book'}" 
    collection="node" 
    datasource="EveneMongo" 
    transformer="script:book1"> 
     <filed column="_id" name="_id" mongoField="nid" /> 
     <entity name="livre_label" 
       processor="MongoEntityProcessor" 
       onError="continue" 
       query="{'nid': ${livre.field_label_nid} }" 

       collection="node" 
       datasource="EveneMongo" 
       transformer="script:book2"> 
    </entity 
</document> 
</dataConfig> 

和腳本JS:

<script><![CDATA[ 

      function book1(row) 
      { 
       if(row.get('taxonomy') !== null) 
       { 
        var taxo = JSON.parse(row.get('taxonomy')) 

        for(var i in taxo) { 
         if(taxo[i].name !== null && taxo[i].vid !== null) 
         { 
          if(taxo[i].vid == 2) 
          { 
           row.put('taxonomy_names',taxo[i].name); 
          } 
         } 
        } 
       } 
      } 

      function book2() 
      { 

      //... 

      } 
]]></script>