6

Apache Solr で、JSON 応答のリストにラップされたフィールドを受信するという問題が発生していますが、それらは特異である必要があります。これは schema.xml からの抜粋です。問題を引き起こす 2 つのフィールドの例はdjango_ct、 とdjango_idです。

  <fields>
    <!-- general -->
    <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
    <field name="django_ct" type="string" indexed="true" stored="true" multiValued="false"/>
    <field name="django_id" type="string" indexed="true" stored="true" multiValued="false"/>

データが Solr にポストされる方法の例を次に示します。

<doc>
    <field name="id">search.productcategory.3</field>
    <field name="gender">M</field>
    <field name="name">OBQYHSOQLWOUEHRMPSDI</field>
    <field name="text">M\nOBQYHSOQLWOUEHRMPSDI</field>
    <field name="django_id">3</field>
    <field name="django_ct">search.productcategory</field>
</doc>

そして、これはsolrに保存されたファイルの例です:

  "response": {
    "numFound": 1,
    "start": 0,
    "docs": [
      {
        "django_ct": [
          "search.productcategory"
        ],
        "name": [
          "Example"
        ],
        "text": [
          "Male\nExample"
        ],
        "id": "search.productcategory.2",
        "gender": [
          "Male"
        ],
        "django_id": [
          2
        ],
        "_version_": 1502081283634757600
      }
    ]
  }

これらのフィールドがリストでラップされる原因は何ですか? スキーマでは、multiValuedこれらのフィールドの属性は false に設定されています。コアの作成と schema.xml の置き換えを除けば、他のすべてはすぐに使用できます。Haystack (Django プラグイン) を使用して Solr にアクセスしています。コードはこれらのフィールドに対して単一の値を受け取ることを期待していますが、これによって完全に壊れています。問題をさかのぼると、Solr の構成方法が原因のようです。

編集: これは solr.log の完全な内容です。これはすべて、サーバーの起動後にログに記録され、いくつかのサンプル クエリを実行しても出力がありませんでした:

INFO  - 2015-05-27 08:38:12.563; [   ] org.eclipse.jetty.server.Server; jetty-8.1.10.v20130312
INFO  - 2015-05-27 08:38:12.586; [   ] org.eclipse.jetty.deploy.providers.ScanningAppProvider; Deployment monitor /Users/sampeka/solr-5.1.0/server/contexts at interval 0
INFO  - 2015-05-27 08:38:12.593; [   ] org.eclipse.jetty.deploy.DeploymentManager; Deployable added: /Users/sampeka/solr-5.1.0/server/contexts/solr-jetty-context.xml
INFO  - 2015-05-27 08:38:13.629; [   ] org.eclipse.jetty.webapp.StandardDescriptorProcessor; NO JSP Support for /solr, did not find org.apache.jasper.servlet.JspServlet
INFO  - 2015-05-27 08:38:13.682; [   ] org.apache.solr.servlet.SolrDispatchFilter; SolrDispatchFilter.init()WebAppClassLoader=1121453612@42d8062c
4

1 に答える 1

9

問題の根本にたどり着きました。問題は、solrconfig.xml正しく構成されていなかったことです。デフォルトでは、schemafactoryクラスはManagedIndexSchemaFactoryの使用をオーバーライドするように設定されていますschema.xmlschemaFactoryto クラスを変更することで、API 呼び出しによるスキーマClassicIndexSchemaFactoryの使用が強制 され、スキーマが不変になります。schema.xml

于 2015-05-27T13:31:44.293 に答える