2015-08-17 2 views
1

Я запускаю solr в режиме CloudSolr с тремя осколками. Данные уже проиндексированы в solr. Теперь я сконфигурировал рекомендацию solr в файле solrconfig.xml. Это конфигурация из файла solrconfig. Я использую версию solr 4.10.Solr estester в режиме SolrCloud

<searchComponent name="suggest" class="solr.SuggestComponent"> 
    <lst name="suggester"> 
     <str name="name">mysuggest</str> 
     <str name="lookupImpl">FuzzyLookupFactory</str> 
     <str name="storeDir">suggester_fuzzy_dir</str> 
     <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
     <str name="field">businessName</str> 
     <str name="payloadField">profileId</str> 
     <str name="weightField">businessName</str> 
     <str name="suggestAnalyzerFieldType">text_general</str> 
     <str name="buildOnStartup">false</str> 
    </lst> 
</searchComponent> 

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy"> 
    <lst name="defaults"> 
     <str name="suggest">true</str> 
     <str name="suggest.count">10</str> 
    </lst> 
    <arr name="components"> 
     <str>suggest</str> 
    </arr> 
</requestHandler> 

Вот команда, я использую, чтобы получить результат:

http://shard1:8900/solr/core/suggest?suggest=true&suggest.build=true&suggest.reload&suggest.dictionary=mysuggest&wt=json&indent=true&suggest.q=sale 

Это вывод команды:

{ 
"responseHeader":{ 
"status":0, 
"QTime":1490}, 
"command":"build", 
"suggest":{} 
} 

Ничто не приходит в предложить результат. У меня 10K записей, проиндексированных в solr.

Я вижу следующее в лог-файл:

org.apache.solr.handler.component.SuggestComponent; http://shard1:8983/solr/core/ : null 
org.apache.solr.handler.component.SuggestComponent; http://shard2:8900/solr/core/ : null 
org.apache.solr.handler.component.SuggestComponent; http://shard3:7574/solr/core/ : null 

Я не могу понять, что здесь отсутствует. Благодарю.

ответ

4

Он не работал, потому что solr работал в режиме SolrCloud. Существует два способа выполнить предложение в режиме solrCloud:

  • Используйте кнопки DISTRIB = ложный параметр. Это позволит получить данные только из одного осколка, к которому вы обращаетесь в команде. Вы можете добавить следующее в определение компонента.

    <bool name="distrib">false</bool> 
    
  • Используйте черепков и shards.qt параметр для поиска всех осколков. Параметр shards будет содержать список разделенных запятыми всех осколков, которые вы хотите включить в запрос. Параметр shards.qt определит API-интерфейс reat, к которому вы хотите получить доступ.

shards.qt: сигналы Solr, который запрашивает, чтобы осколками должны быть отправлены в обработчик запроса заданного этим параметром. При запросе используйте shards.qt =/spell, если ваш обработчик запросов «/ spell».

Осколки: Осколки = Solr-shard1: 8983/Solr, Solr-shard2: 8983/Solr Distributed Search

Пожалуйста, проверьте Here для более подробной информации.

+1

Спасибо, смог решить добавить shards.qt к параметрам запроса по умолчанию. – edclrk