6

Tôi đang gặp sự cố với Apache Solr, nơi tôi nhận các trường được bao trong danh sách trong các câu trả lời JSON nhưng chúng phải là số ít. Dưới đây là một exerpt từ schema.xml, hai lĩnh vực ví dụ cho tôi một vấn đề là django_ctdjango_id:Các trường trong phản ứng solache solr được đa giá trị khi chúng phải là số ít

<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"/> 

Dưới đây là một ví dụ về cách dữ liệu được đưa lên 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> 

Và đây là ví dụ về tệp được lưu trữ trong 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 
     } 
    ] 
    } 

Điều gì khiến các trường này được bao bọc trong danh sách? Trong lược đồ, thuộc tính multiValued cho các trường này được đặt thành false. Ngoài việc tạo ra cốt lõi và thay thế schema.xml mọi thứ khác là thẳng ra khỏi hộp. Tôi đang truy cập Solr bằng cách sử dụng Haystack (một plugin Django), mã dự kiến ​​sẽ nhận được các giá trị duy nhất cho các trường này nhưng hoàn toàn bị hỏng bởi điều này. Truy tìm lại vấn đề có vẻ là do Solr được cấu hình như thế nào.

Edit: Đây là những nội dung hoàn toàn của solr.log, tất cả điều này đã được ghi lại sau khi khởi chạy máy chủ, chạy một vài truy vấn mẫu đã không có đầu ra:

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()[email protected] 
+0

Bạn đang truy cập solr từ haystack bằng SearchQuerySet? Nếu có, bạn có thể dán các bộ lọc được sử dụng để truy cập solr. Ngoài ra tìm solr.log và xác định vị trí các mục nhập nhật ký khi bạn thực hiện tìm kiếm ở trên. Nó sẽ hiển thị các tham số chính xác được gửi tới Solr - điều này sẽ cung cấp đủ đầu mối để gỡ lỗi thêm. –

+0

Phản hồi tôi đăng được lấy thẳng từ Solr bằng giao diện quản trị và phù hợp với vấn đề tôi đã truy cập thông qua haystack. SearchQuerySets bị hỏng vì điều này. –

+0

Tôi cũng đã đăng nội dung của solr.log ở trên. –

Trả lời

7

Got vào thư mục gốc của vấn đề . Vấn đề là solrconfig.xml không được định cấu hình chính xác. Theo mặc định, lớp schemafactory được đặt thành ManagedIndexSchemaFactory sẽ ghi đè việc sử dụng schema.xml. Bằng cách thay đổi schemaFactory thành lớp ClassicIndexSchemaFactory, nó buộc sử dụng schema.xml và làm cho lược đồ không thay đổi được bằng các cuộc gọi API.

Các vấn đề liên quan