我的意思是,当用户搜索特定内容时,例如Supreme,
它将打印出1994年4月在纽约市成立的 supremenewyork.com ,Supreme,一个滑板店/服装品牌[1] [2]。
如何将文字 supremenewyork.com 变为网址。基本上我从servlet获取参数并打印在JSP结果页面上。根据我的知识,它不能在Solr方面完成。
Solr的任何专家都能给我一个解决方案吗?
以下是我的以下代码。
System.out.println("request parameter: "
+ request.getParameter("search"));
PrintWriter out = response.getWriter();
try {
HttpSolrServer solr = new HttpSolrServer("http://localhost:8983/solr/Corename/");
SolrQuery query = new SolrQuery();
String test;
// Getting the parameter from the textbox name search
query.setQuery(request.getParameter("search"));
query.setFields("id", "content");
query.setStart(0);
QueryResponse response1 = solr.query(query);
SolrDocumentList results = response1.getResults();
for (int i = 0; i < results.size(); ++i) {
test = results.toString();
String testresults = test.replace("numFound=2,start=0,docs=[","");
testresults = testresults.replace("numFound=1,start=0,docs=[","");
testresults = testresults.replace("numFound=4,start=0,docs=[","");
testresults = testresults.replace("SolrDocument{", "");
testresults = testresults.replace("content=[", "");
testresults = testresults.replace("id=", "");
testresults = testresults.replace("]}]}", "");
testresults = testresults.replace("]}", "");
request.setAttribute("testresults", testresults);
System.out.println(testresults);
request.getRequestDispatcher("Results.jsp").forward(request,
response);
}
} catch (SolrServerException se) {
se.printStackTrace();
}
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
JSP代码:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>THE SUPER SEARCH</title>
</head>
<body>
<h4>Here's the following results</h4>
<%String testresults=(String)request.getAttribute("testresults");
out.print("" + testresults);
%>
</body>
</html>
答案 0 :(得分:1)
我不鼓励直接在Solr做这件事,恕我直言,这就像要求MySql存储一个字符串并返回一个url。
无论如何,如果你真的想用Solr做这件事,有很多方法:
格式化一个或多个字段的输出,我建议使用XSLTResponseWriter,它也可以返回json。
将您自己的SearchComponent添加到您的Solr实例中,此处为interesting post和here。
我知道的另一种方式是Alba,Solr插件很容易。
最后,如果你真的想要返回一个ulr,你可以在索引期间将url存储在一个字段中。
<强>更新强>
查看您发布的代码,我看到的最大问题是您使用迭代返回结果集的方式。你应该这样做:
for (SolrDocument d : response1.getResults()) {
String content = (String) d.get("content");
long id = (long) d.get("id");
}
内部Solrdocument
是LinkedHashMap
。