Ошибка NoMethodError: неопределенный метод `автозаполнения’ для Sunspot

#ruby-on-rails-3 #solr #sunspot #sunspot-solr

#ruby-on-rails-3 #solr #sunspot #sunspot-solr

Вопрос:

Привет, я пытаюсь включить автозаполнение в свое приложение, но оно выдает ошибку.
sunspot-2.1.1/lib/sunspot/dsl/fields.rb:93:in rescue in method_missing': undefined method autocomplete' for #Sunspot::DSL::Fields:0x000001029b7cd0 (NoMethodError)
Ниже приведены изменения, которые я сделал. Я ценю вашу помощь.

Модель

 def category_name
self.name
end

searchable do
text :name
autocomplete :category_name, :as => :name
end
  

Solr Schema.xml

     <fieldType name="autocomplete" class="solr.TextField" positionIncrementGap="100">
  <!-- The index analyzer adds parts of the field from 2 - 25 chars including whitespace etc. -->
  <analyzer type="index">
    <tokenizer class="solr.NGramTokenizerFactory" minGramSize="2" maxGramSize="25"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <!-- The query analyzer takes the whole input, whitespace and all -->            
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

<fieldType name="autosuggest" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
  <tokenizer class="solr.LetterTokenizerFactory"/>
  <filter class="solr.LowerCaseFilterFactory"/>
  <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
  <tokenizer class="solr.LetterTokenizerFactory"/>
  <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
  

HTML

 <input id="category_name" name="search" size="30" type="text" /> <script>$('#category_name').autocomplete('http://127.0.0.1:8982/solr/', 'name', {});</script>
                <script>$('#search').autocomplete('http://127.0.0.1.120:8982/solr/', 'search', {});</script>
  

Ответ №1:

Я изменил JRE с OpenJDK на Oracle и переустановил все. Теперь это работает.