2012-04-09 1 views
1

У меня возникли проблемы с тем, чтобы функция автозаполнения Indextank работала в моем приложении Rails. Я использую searchify для размещения моего индекса и драгоценности Tanker для создания моего индекса (https://github.com/kidpollo/tanker). Я следил за руководством здесь (http://www.searchify.com/documentation/tutorial-autocomplete) и здесь (https://github.com/flaptor/indextank-jquery/), чтобы заставить его работать, но я не получаю результатов назад. Я включил публичный API в панель поиска searchify.Автозаполнение IndexTank не работает в Rails 3 с самолетом Tanker

Я думаю, что проблема связана с тем, как драгоценный камень Танкера индексирует данные (он может индексировать несколько моделей в одном индексе). О той же проблеме сообщалось здесь - https://github.com/kidpollo/tanker/issues/25 - но я смущен с разрешением, которое было дано. Я не уверен, что имеется в виду: indexes =>: text в этом экземпляре. Может ли кто-нибудь пролить немного больше света на то, что мне нужно сделать?

Это моя модель, где я индексирую данные. Пока нет данных других моделей.

class Post < ActiveRecord::Base 
    include Tanker 

    # Relationships 
    belongs_to :user 
    has_many :comments 

    tankit index do 
    indexes :title 
    indexes :description 
    indexes :post_comments do 
     comments.map {|comment| comment.description } 
    end 
    end 

    # define the callbacks to update or delete the index upon saving and deleting records 
    after_save :update_tank_indexes 
    after_destroy :delete_tank_indexes 
end 

Это код, который я использовал для проверки автозаполнения. Я также попытался использовать пример из https://github.com/flaptor/indextank-jquery/

<script src='https://raw.github.com/flaptor/indextank-jquery/master/jquery.indextank.ize.js' type='text/javascript'></script> 
<script src='https://raw.github.com/flaptor/indextank-jquery/master/jquery.indextank.autocomplete.js' type='text/javascript'></script> 

<script type='text/javascript'> 
    var publicApiUrl = "myPublicURL"; 
    var indexName = "myIndexName"; 
</script> 

<script type='text/javascript'> 
    $(document).ready(function(){ 
     // let the form be 'indextank-aware' 
     $("#myform").indextank_Ize(publicApiUrl, indexName); 
     // let the query box have autocomplete 
     $("#query").indextank_Autocomplete(); 
    }); 
</script> 

<%= form_tag 'posts/search', :method => :get, :id => 'myForm' do %> 
    <%= text_field_tag :query, "", :id => 'query' %> 
    <button type="submit">Search</button> 
<% end %> 

ответ

0

Эй Крис сюда из Searchify. Я еще слишком знаком с камнем Танкера. Но Searchify/IndexTank по умолчанию выполняет поиск в поле документа под названием «текст», в том числе для предложений автозаполнения. Поэтому попробуйте индексировать свои данные (заголовок, описание или post_comments, из фрагмента кода) в поле «текст». Если у вас все еще есть проблемы, свяжитесь со мной через веб-сайт или нашу электронную почту поддержки, и я могу посмотреть на ваш индекс, чтобы узнать, как вы (и танкер) индексируете вещи.

+0

Спасибо, мне удалось заставить его работать, индексируя другое поле, называемое текстом. – sjbamber

+0

Вы можете использовать любое поле для автозаполнения, указав параметр «field». См. Http://indexden.com/documentation/api#autocomplete –