django - apache solr 响应中的字段应该是单数时是多值的

标签 django apache solr django-haystack solr-multy-valued-fields

我在使用 Apache Solr 时遇到问题,我在 JSON 响应中接收包含在列表中的字段,但它们应该是单数。这是schema.xml的摘录,给我一个问题的两个示例字段是django_ctdjango_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

最佳答案

找到了问题的根源。问题是 solrconfig.xml没有正确配置。默认情况下 schemafactory类设置为 ManagedIndexSchemaFactory它覆盖了 schema.xml 的使用.通过更改 schemaFactory上课ClassicIndexSchemaFactory它强制使用 schema.xml并通过 API 调用使模式不可变。

关于django - apache solr 响应中的字段应该是单数时是多值的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30427643/

相关文章:

django - connection.queries 没有给我任何 django

python - Django NoReverseMatch 在/qw-1/

django - 我从哪里导入 Django 1.10 中的 `DoesNotExist` 异常?

php - Symfony 路由不工作 Apache 返回 404

apache - 错误请求您的浏览器发送了该服务器无法理解的请求

java - statsComponent 中的 stats 字段

python - 如何解决django中clean函数的问题

apache - Hadoop 272 - Datanodes 启动然后停止

tomcat - 没有定义数据导入处理程序(sorl 4.4.0/Tomcat/Centos)

java - 比 Solr 更喜欢 Apache Lucene 的情况?