如何将Solr JSON响应转换为HTML,而JSON每次都不同

时间:2013-03-28 12:34:56

标签: javascript json solr

我正在使用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都会给出不同对象结构的响应,即一个对象可能有年龄段但其他对象不能拥有,因为它取决于查询。


  

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


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

Javascript在遇到任何可能出现错误的错误后停止工作。这也是问题。如果我使用for循环来遍历对象层次结构,则它是高度错误的。

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

2 个答案:

答案 0 :(得分:0)

我建议使用在Solr中很容易支持的Velocity模板 - 而不是从JSON中提取数据并通过JS渲染HTML。

文档here

答案 1 :(得分:0)

您可能需要考虑使用ajax-solr - 用于创建Solr用户界面的JavaScript框架