Solr Jquery Автозаполнение Источник URL - PullRequest
0 голосов
/ 12 сентября 2011

После просмотра SO я нашел этот фрагмент кода повсюду, даже я хочу реализовать AutoComplete, я использую Solr для реализации поиска и хотел использовать TermsComponent для реализации Autocomplet

    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, вот так и должно быть, следующий URL http://localhost:8983/solr/terms?terms.fl=name&terms.prefix=at&wt=json&omitHeader=true дает мне прекрасный результат, теперь, пожалуйста, скажите мне, что wat должен быть моим источником URL, и если я хочу настроить, добавьте больше параметров, таких как term.lower = py & term.lower.incl = false & indent = true & wt = json и т. д., должны я бы лучше написал их в URL или в моем классе Java, как Список терминов = запрос (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, поэтому я хотел подтвердить еще одну вещь, потому что мне нужно, мне просто нужно изменить URL-адрес здесь или настроить еще несколько вещей

1 Ответ

1 голос
/ 12 сентября 2011

Маловероятно, что вам нужно параметризовать эту сторону клиента, поэтому установите эти параметры на стороне сервера.Задавать их с помощью кода вместо жесткого кодирования в URL-адресе, как правило, лучше, это раскрывает намерение.Также помните, что вы можете установить параметры в конфигурации solr .

Наконец, не программируйте по совпадению .Понимайте используемый вами фрагмент jQuery, иначе у вас рано или поздно возникнут проблемы.

...