2012-03-23 6 views
1

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

мне нужно автозаполнение и для этого я с помощью огранки:

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 

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

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

Мой schema.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

К сожалению, что вопрос именно ? – javanna

+0

Да, в чем же вопрос? –

+0

Я спросил, но потом нашел решение. И поскольку я не могу ответить на мой вопрос в течение 8 часов, я отредактировал его и добавил ответ. – vladimir

ответ

3

Я нашел эту проблему, я просто добавил facet.method = перечисление и теперь он отлично работает. Также я удалил FQ = фильтр :(«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 
Смежные вопросы