0

Hue と Solr の両方の動的フィールドで問題が発生します。Hue では、動的フィールドとして保存されたデータは、インポートされたコレクションから利用可能なすべてのデータを表示するデフォルトの Solr 検索に表示されません。また、text_general タイプで、索引付けされて保管されているこのデータの検索にも失敗します。Solr では、スキーマ設定が次のようになっているにもかかわらず、動的フィールドがインデックス化されていないようです。

   <dynamicField name="*_t"  type="text_general"    indexed="true"  stored="true"/>
   <dynamicField name="*_txt" type="text_general"   indexed="true"  stored="true" multiValued="true"/>

これらの設定は、トークン検索可能で、Hue の Solr 検索に表示される通常のフィールド「名前」とまったく同じです。

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

私の目標は、タグ名と属性名を索引付けのフィールド名として使用し、値を索引付けすることでした。そして、これはsolrで機能し、基本的なクエリ「start:star」を使用すると結果を確認できます

"docs": [
      {
        "id": "5CCD1D4D-2D7D-4F6A-BD2B-FC9D8577493F",
        "name": "43-02 43 AVENUE",
        "borough_t": "QUEENS",
        "community_board_t": "02 QUEENS",
        "police_precinct_t": "Precinct 108",
        "city_council_district_t": "26",
        "created_date_t": "1305702000",
        "status_t": "Closed",
        "resolution_action_t": "Cleaning crew dispatched.  Property cleaned.",
        "closed_date_t": "1309244400",
        "x_coordinate_t": "1006146",
        "y_coordinate_t": "210783",
        "_version_": 1450333101007831000
      },

末尾に _t が付いているものはすべて動的フィールド値であることがわかっており、その前の名前はタグからの名前です。ただし、部分的に検索可能な唯一のフィールドは名前フィールドです。クエリで「43」を検索すると、このドキュメントと、「名前」に 43 が含まれる他のドキュメントが取得されます。しかし、police_precinct_t フィールドから「Precinct」という単語を検索しても、何も返されません。これらはすべて、次の場所に移動して到達する Solr 管理ウィンドウにあります。http://HOST:8983/solr.

Hue では、さらにまばらな情報しかありません。Solr 検索パネルに移動し、デフォルトの空白検索を実行すると、Solr db 内のすべてのデータの最初のページが返されます。

1450333101007831000 5CCD1D4D-2D7D-4F6A-BD2B-FC9D8577493F 43-02 43 AVENUE

1450333092014194700 7606462C-8657-4113-9427-5CEF30FB5483 Engine 53/Ladder 43

1450333092021534700 EEB939BD-DE52-467E-8EA3-91C7AF8E162A Engine 43/Ladder 59

1450333095903363000 0BEDA34C-ECCE-4405-A0DD-6D9994C51CE3 102-18 43 AVENUE

1450333095906508800 F7B6F181-C289-4F42-9ADC-36971ABE813A 102-28 43 AVENUE

1450333095907557400 C0F5286F-3216-4A0A-A4D0-F6038020122C 102-28 43 AVENUE

1450333095908606000 1C94DAFF-AB59-452B-A569-6CE4472867C7 102-36 43 AVENUE

1450333096052260900 9C6AF32C-06FA-46B2-8266-2BC8CF23CE79 104-20 43 AVENUE

最初の値はバージョンです、2 番目は id で、次は定義されたフィールドのみが Hue に表示されるかどうかをテストするために使用していた名前の値であり、これが当てはまるようです。ダイナミック フィールド データは、Solr 管理パネルのように Hue にも表示されませんが、Solr クエリ ウィンドウと同じ方法でデータを検索できます。「borough_t:QUEENS」と入力すると、Hue クエリと Solr クエリの両方で、フィールドと値が正確に一致するすべての結果が得られます。これはトークンの一致を許可せず、宣言された動的フィールドまたは上記の属性の予想される動作と一致しません。コレクション 1 の Solr で提供されている schema.xml の例を使用しています。グロブ「*_t」を持つ他の動的フィールドが競合しないことを確認し、フィールドを無効にしたりエラーにしたりすることを確認しました。

Solr の使い方は非常に簡単で、ある程度読めば理解できますが、solr が期待どおりに動作しない理由については、答えが見つからないようです。SolrJ を使用してファイルを Solr にインデックス付けしています。次に、Solr 管理パネルと Hue (2.5) の Solr 検索の両方を使用して、インデックス付けされたデータを操作しています。

NYC Open Data Siteから取得した XML データの例は、適切にフォーマットされませんが、本当に興味がある場合は、Firehouse Location および Graffiti Location データを検索して、xml をエクスポートできます。それが私がSolrに入れているデータです。私が見ることができる私の解決策は、各タグ値を text_general 設定で正確なフィールドに割り当てるハードコーディングされた解釈コードを書いているか、その場でフィールドを作成しているように見えますが、これは動的フィールドと大差ないようです。動的フィールドを期待どおりに機能させる方法を見つけたいと思います。

前もって感謝します。

4

1 に答える 1

3

あなたの問題は、フィールド「名前」がフィールド「テキスト」にコピーされていることです(* _tではありません)。キー名を指定しない場合、検索するデフォルトのフィールドとして「テキスト」が宣言されます。したがって、この q=what to search のようなことをすると、「テキスト」フィールド (「名前」を含む) が検索されます。

デフォルトの schema.xml には、これらの手順があります (Solr 4.4 および 4.5)。

stored="false" が、solr 応答でこのフィールドの値が表示されない理由です。

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

そして、ここで名前がテキストにコピーされます

<copyField source="name" dest="text"/>

schema.xml でコメントされているこれらの行でわかるように、defaultSearch フィールドとしての「テキスト」の宣言は solrconfig.xml にあります。

< ! --Note: Un-commenting defaultSearchField will be insufficient 
if your request handler in solrconfig.xml defines "df", which takes precedence. 
That would need to be removed.
 <defaultSearchField>text</defaultSearchField> -->

それでは、solrconfig.xmlに行きましょう..

<requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
        will be overridden by parameters in the request
     -->
 <lst name="defaults">
   <str name="echoParams">explicit</str>
   <int name="rows">10</int>
   <!--******TAKE A LOOK HERE *******-->
   <str name="df">text</str>
   <!--*****************************-->

 </lst>
... more stuff
</requestHandler>

あなたの問題を解決する方法?

schema.xml のこの行のコメントを外して、すべての「*_t」も「text」にコピーします。

 <!-- <copyField source="*_t" dest="text" maxChars="3000"/> -->

OBS: この変更後、インデックスを再作成する必要があります。

于 2013-10-31T15:20:24.527 に答える