0

我正在使用 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 循环来遍历对象层次结构,它很容易出错。

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

4

2 回答 2

0

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

文档在这里

于 2013-03-28T12:36:58.433 回答
0

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

于 2013-03-28T13:28:25.847 回答