SOをブラウジングした後、AutoCompleteを実装したい場合でも、このコードをどこにでも見つけました.Solrを使用して検索を実装しており、オートコンプリートを実装するTermsComponentを使用したいと考えていました.
var cache = {};
$("#textbox").autocomplete({
source: function(request, response) {
if (request.term in cache) {
response($.map(cache[request.term].d, function(item) {
return { value: item.value, id: item.id }
}))
return;
}
$.ajax({
url: "/Services/AutoCompleteService.asmx/GetEmployees", /* I use a web service */
data: "{ 'term': '" + request.term + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function(data) { return data; },
success: function(data) {
cache[request.term] = data;
response($.map(data.d, function(item) {
return {
value: item.value,
id: item.id
}
}))
},
error: HandleAjaxError // custom method
});
},
minLength: 3,
select: function(event, ui) {
if (ui.item) {
formatAutoComplete(ui.item); // custom method
}
}
});
今私の質問は、次の URL http://localhost:8983/solr/terms?terms.fl=name&terms.prefix=at&wt=json&omitHeader=trueで完璧な結果 が得られる、URL ソースを構成する方法です。今、plsは私のURLソースであるべきだと教えてくれます。カスタマイズしたい場合は、terms.lower=py&terms.lower.incl=false&indent=true&wt=jsonなどのパラメーターを追加して、URLまたはJavaクラスでハーコードする必要がありますList terms = query(q, Integer.parseInt(limit)); のように
private List<TermsResponse.Term> query(String q, int limit) {
List<TermsResponse.Term> items = null;
SolrQuery query = new SolrQuery();
query.addTermsField("spell");
query.setTerms(true);
query.setTermsLimit(limit);
query.setTermsLower(q);
query.setTermsPrefix(q);
query.setQueryType("/terms");
try {
QueryResponse qr = server.query(query);
TermsResponse resp = qr.getTermsResponse();
items = resp.getTerms("name");
} catch (SolrServerException e) {
items = null;
}
return items;
}
助けてください、ええと、jqueryはあまり得意ではないので、もう1つ確認したかったのですが、必要なのは、ここのURLを変更するか、さらにいくつかのことをカスタマイズする必要があるだけです