SOLR фасет с префиксом и фильтрами - PullRequest
1 голос
/ 23 марта 2012

У меня проблема с использованием фасета.

Мне нужно автозаполнение, и для этого я использую фасет:

http://localhost:8080/solr/select?q=*:*&wt=json&indent=on&facet=on&rows=0&fq=filter:("30")  AND filter2:("1")&facet.field=spell&facet.prefix=g&facet.limit=10&facet.mincount=1

Я использую фасет, потому что мне нужно добавить фильтры для запроса, например filter :( "30") AND filter2 :( "1")

Когда у меня есть несколько документов, все работают нормально и быстро, но если я добавляю много документов в индекс, этот запрос работает слишком медленно или просто SOLR не отвечает на этот запрос.

Моя схема.xml:

......
<fieldType name="textSpellShingle" class="solr.TextField" positionIncrementGap="100">
   <analyzer>
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.ShingleFilterFactory" maxShingleSize="4" outputUnigrams="true"/>
      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
   </analyzer>
</fieldType>
.....
<fields>
   <field name="id" type="string" indexed="true" stored="true" required="true"/>
   <field name="article" type="textSpellShingle" indexed="true" stored="false" multiValued="true"/>
   <field name="title" type="text_general" indexed="true" stored="true"/>
   <field name="filter" type="int" indexed="true" stored="true"/>
   <field name="filter2" type="int" indexed="true" stored="true"/>
</fields>
<uniqueKey>id</uniqueKey>
<defaultSearchField>article</defaultSearchField>
<solrQueryParser defaultOperator="OR"/>
<copyField source="article" dest="spell"/>
<copyField source="title" dest="spell"/>
....

1 Ответ

3 голосов
/ 03 апреля 2012

Я нашел проблему, я просто добавил facet.method = enum, и теперь она работает нормально.Также я удалил fq = filter :( "30") И filter2 :( "1") и поместил его в запрос, так что ... запрос теперь выглядит так:

http://localhost:8080/solr/select?q=filter:("30") AND filter2:("1")&wt=json&indent=on&facet=on&rows=0&facet.field=spell&facet.prefix=g&facet.limit=10&facet.mincount=1&facet.method=enum
...