การค้นหา SOLR ไม่รวมข้อมูลภายในฟิลด์ JSON

ฉันมีเอกสารมากมายรวมอยู่ในดัชนี SOLR ของฉัน เอกสารเหล่านี้มีช่องที่มีข้อมูล JSON

เมื่อฉันทำการค้นหาด้วยคำหลัก ฉันต้องการให้ค้นหาฟิลด์ JSON นั้นด้วย ตอนนี้มันไม่ทำงาน

คำถาม:

{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"keyword_to_search",
      "defType":"edismax",
      "qf":"title^300",
      "fl":"field_name:[json]",
      "wt":"json",
      "_":"1551735180672"
    }
  },
  "response":{
    "numFound":0,
    "start":0,
    "docs":[]
  }
}

มีเอกสารจริงที่มีฟิลด์ JSON พร้อมข้อมูล 'keyword_to_search'

"field_name":"{\"field_key\": \"keyword_to_search\"}",

ดูเหมือนว่าฟิลด์นี้สามารถค้นหาได้เนื่องจากฉันสามารถส่งคืนเอกสารได้เมื่อทำการสืบค้น:

{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"{!term f=field_name}keyword_to_search",
      "_":"1551735532524"
    }
  },
  "response":{"numFound":1,"start":0,"docs":[
    {
    ...
    "field_name":"{\"field_key\": \"keyword_to_search\"}",
    }
  ]}
}

จะแก้ไขแบบสอบถามของฉันเพื่อรวมสิ่งนี้ได้อย่างไร

โครงสร้าง JSON:

{
  ...
  "field_name": "field_value",
  "columns": [
    ...
    {
        "nested_key": "nested_value_1"
    },
    {
        "nested_key": "nested_value_1"
    },
  ],
}

person Rob Fyffe    schedule 04.03.2019    source แหล่งที่มา


คำตอบ (1)


qf=title^300 บอก Solr ว่าควรค้นหาฟิลด์ใดและน้ำหนักที่กำหนดให้กับแต่ละฟิลด์

qf=title^300 json จะค้นหาทั้งฟิลด์ title และฟิลด์ json และให้คะแนน title เพิ่มขึ้น 300 เท่า เมื่อเทียบกับการค้นหา json

person MatsLindh    schedule 05.03.2019
comment
ขอบคุณ สิ่งนี้ทำให้การค้นหาช้ามากเนื่องจากขนาดของฟิลด์ JSON ฉันควรจัดทำดัชนีนี้เป็นเอกสารแยกต่างหากหรือไม่ หากเป็นเช่นนั้น ฉันจะเชื่อมโยงสิ่งเหล่านี้กับผู้ปกครองได้อย่างไร เนื่องจากนั่นคือสิ่งที่ฉันต้องการส่งคืน ไม่ใช่เอกสาร json ใหม่ - person Rob Fyffe; 05.03.2019
comment
หากมีช่องใดช่องหนึ่งใน JSON ที่คุณต้องการค้นหา ให้จัดทำดัชนีช่องนั้นเป็นช่องแยกต่างหาก เรากำลังพูดถึงเนื้อหาที่นี่มากแค่ไหน? การแยกออกเป็นเอกสารแยกต่างหากจะไม่ลดจำนวนโทเค็นที่จะค้นหา ดังนั้นจะขึ้นอยู่กับคำจำกัดความของ field_name เช่นกัน - person MatsLindh; 06.03.2019
comment
มันเป็นวัตถุ JSON ขนาดใหญ่ที่มีอักขระมากกว่า 20,000 ตัว ฉันเพิ่มโครงสร้างของฟิลด์ JSON ลงในโพสต์ต้นฉบับ ฉันต้องค้นหา 3/4 รายการที่มีอยู่ภายในวัตถุอาร์เรย์ - person Rob Fyffe; 06.03.2019
comment
ฉันยอมรับคำตอบนี้เมื่อมันได้ผล ขอบคุณ. - person Rob Fyffe; 07.03.2019