фильтрованный по запросу параметр запроса - PullRequest
0 голосов
/ 16 марта 2012

Моя конфигурация выглядит следующим образом:

`

 <lst name="defaults">
    <str name="defType">dismax</str>
    <str name="q.alt">*:*</str>
    <str name="qf">
        city^10.0 name^10.0 city_l10n_value^10.0 name_l10n_value^10.0 state^5.0 country^2.0
    </str>
    <str name="sort">hotel_count desc,query({!v="type:(airport OR train_station)"}) desc ,score desc</str>
    <str name="tie">0.1</str>
   <str name="echoParams">explicit</str>
   <int name="rows">100</int>
 </lst>

`

Схема, которую я использую:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
   <filter class="solr.LengthFilterFactory" min="2" max="100"/>      
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="German2" />        
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LengthFilterFactory" min="2" max="100"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="German2" />        
  </analyzer>
</fieldType>
<field name="type" type="text_general" indexed="true" stored="true"/>
......

Теперь после индексации результаты поиска выглядят следующим образом:

<result name="response" numFound="114" start="0">
<doc><str name="type">airport</str></doc>
<doc><str name="type">train_station</str></doc>
<doc><str name="type">tourist_feature</str></doc>
<doc><str name="type">company_location</str></doc>
<doc><str name="type">company_location</str></doc>
<doc><str name="type">company_location</str></doc>
<doc><str name="type">company_location</str></doc>
<doc><str name="type">company_location</str></doc>

К сожалению, если я выполню запрос,

http://localhost:8983/solr/maincore/select/?fq=type:company_location,

ничего не возвращает.

http://localhost:8983/solr/maincore/select/?fq=type:tourist_feature

возвращает некоторое совпадение.

Что это, что я делаю не так?

1 Ответ

3 голосов
/ 16 марта 2012

Для запросов фильтра вы должны использовать нетексированные поля.

http://wiki.apache.org/solr/SolrFacetingOverview

Поскольку поля огранки часто задаются для двух целей, понятный человеку текст и значение детализации запроса, они часто индексируется иначе, чем поля, используемые для поиска и сортировки:

  • Их часто не размечают на отдельные слова
  • Они часто не отображаются в нижнем регистре
  • Читаемая человеком пунктуация часто не удаляется (кроме двойных кавычек)
  • Часто их не нужно хранить, поскольку сохраненные значения будут выглядеть как индексированные значения, а для получения значений используется механизм огранки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...