如何在每次JSON不同的情况下将Solr JSON响应转换为HTML

How to translate Solr JSON response into HTML while JSON is different every time

本文关键字:JSON Solr 响应 转换 HTML 情况下      更新时间:2023-09-26

我使用Solr 4在java web应用程序中进行搜索。Solr生成一个JSON响应,我必须从中提取搜索结果并将其转换为html,以便用户可以阅读。我知道一个解决办法,但它似乎很愚蠢,我想一定有聪明的办法。

{
  "responseHeader": {
    "status": 0,
    "QTime": 0,
    "params": {
      "fl": "id,title",
      "indent": "true",
      "q": "solr",
      "wt": "json"
    }
  },
  "response": {
    "numFound": 3,
    "start": 0,
    "docs": [
      {
        "id": "1",
        "title": "Solr cookbook"
      },
      {
        "id": "2",
        "title": "Solr results"
      },
      {
        "id": "3",
        "title": "Solr perfect search"
      }
    ]
  }
}

之后,我将这个文本计算为:

var obj = eval ("(" + txt + ")");
要生成html页面,我可以使用
 <script>
document.getElementById("id").innerHTML = obj.response.docs[1].id
document.getElementById("title").innerHTML = obj.response.docs[1].title
</script>
or
document.write(obj.response.docs[1].id);

但限制是每次solr给出的响应都是不同的对象结构,即一个对象可能有年龄字段,但其他对象不能有,因为它取决于查询。


我想使用一个JSP页面来显示搜索结果(如Google)对于所有搜索查询


是否可以编写一个单一的代码段,它适用于任何可能的搜索结果与不同的模式。

Javascript在遇到任何错误后停止工作,这在我的情况下是可能的。这也是个问题。如果我使用for循环遍历对象层次结构,它很容易出错。

是否可以使用单视图页面谢谢。

您可能需要考虑使用ajax-solr - 一个JavaScript框架,用于创建Solr

的用户界面

我建议使用Solr中支持的Velocity模板,而不是从JSON中提取数据并通过JS呈现HTML。

这里

文档