0
我试图使用Solr的(指数核心名称为“人”),以实现我的搜索引擎快速寻址功能都做在我的solrconfig.xml中进行以下配置更改:Solr的功能,事先键入的内容执行
<queryResponseWriter name="tah"
class="com.sample.TypeAheadResponseWriter"/>
<requestHandler name="/type-ahead"
class="solr.SearchHandler">
<lst name="defaults">
<str name="wt">tah</str>
<str name="defType">dismax</str>
<str name="qf"> wordPrefix^1.0 </str>
</lst>
</requestHandler>
我的架构文件中的字段
<field name="wordPrefix" type="prefix" />
<copyField source="name" dest="wordPrefix"/>
下面是我com.sample.TypeAheadResponseWriter的内容
public class TypeAheadResponseWriter implements QueryResponseWriter {
private Set<String> fields;
@Override
public String getContentType(SolrQueryRequest req, SolrQueryResponse solrQueryResponse) {
return "text/html;charset=UTF-8";
}
public void init(NamedList n) {
fields = new HashSet<String>();
fields.add("word");
}
@Override
public void write(Writer w, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
SolrIndexSearcher searcher = req.getSearcher();
NamedList nl = rsp.getValues();
int sz = nl.size();
for (int li = 0; li < sz; li++) {
Object val = nl.getVal(li);
if (val instanceof DocList) {
DocList dl = (DocList) val;
DocIterator iterator = dl.iterator();
w.append("<ul>n");
while (iterator.hasNext()) {
int id = iterator.nextDoc();
Document doc = searcher.doc(id, fields);
String name = doc.get("name");
w.append("<li>" + name + "</li>n");
}
w.append("</ul>n");
}
}
}
}
但我没有得到在击中URL
http://<hostname>:8983/solr/people/type-ahead?q=Reb.
但是,当我在solrconfig.xml中的重量值更改为JSON,它做得到响应任何回应。我尽可能地尝试了一切。不知道我哪里错了。
感谢。有效 :) – Ankit