Mam problem z Solr i Faceting i zastanawiam się, czy ktoś wie o poprawce. Pracuję nad tym w tej chwili, ale naprawdę chcę się dowiedzieć, dlaczego moje zapytanie nie działa.Faceting w Solr przy użyciu pól "łańcuchowych", pól "tekstowych" i "pól" kopiowania
Tu jest moja Schema, uproszczone, aby ułatwić wykonanie:
<fields>
<field name="uniqueid" type="string" indexed="true" required="true"/>
<!-- Indexed and Stored Field --->
<field name="recordtype" type="text" indexed="true" stored="true"/>
<!-- Facet Version of fields -->
<field name="frecordtype" type="string" indexed="true" stored="false"/>
</fields>
<!-- Copy fields for facet searches -->
<copyField source="recordtype" dest="frecordtype"/>
Jak widać mam przypadek niewrażliwe pole o nazwie RECORDTYPE i jest kopiowany do wrażliwym na sprawy frecordtype pola, które nie tokenize tekst. Wynika to z tego, że solr zwraca wartość indeksowaną zamiast wartości zapisanej w wynikach faceting.
Gdy próbuję następujące zapytanie:
http://localhost:8080
/solr
/select
?version=2.2
&facet.field=%7b!ex%3dfrecordtype%7dfrecordtype
&facet=on
&fq=%7b!tag%3dfrecordtype%7dfrecordtype%3aLarge%20Record
&f1=*%2cscore
&rows=20
&start=0
&qt=standard
&q=text%3a%25
nie dostanę żadnych wyników, jednak facteting nadal pokazuje, że jest 1 rekord.
<result name="response" numFound="0" start="0" />
<lst name="facet_counts">
<lst name="facet_queries" />
<lst name="facet_fields">
<lst name="frecordtype">
<int name="Large Record">1</int>
<int name="Small Record">12</int>
<int name="Other">1</int>
</lst>
</lst>
<lst name="facet_dates" />
</lst>
Jednakże jeśli zmienić zapytanie fitler (linia 7), aby być na "RECORDTYPE" zamiast frecordtype:
http://localhost:8080
/solr
/select
?version=2.2
&facet.field=%7b!ex%3dfrecordtype%7dfrecordtype
&facet=on
&fq=%7b!tag%3dfrecordtype%7drecordtype%3aLarge%20Record
&f1=*%2cscore
&rows=20
&start=0
&qt=standard
&q=text%3a%25
uzyskać wynik 1 z tyłu, że chcę.
<result name="response" numFound="1" start="0" />
<lst name="facet_counts">
<lst name="facet_queries" />
<lst name="facet_fields">
<lst name="frecordtype">
<int name="Large Record">1</int>
<int name="Small Record">12</int>
<int name="Other">1</int>
</lst>
</lst>
<lst name="facet_dates" />
</lst>
Więc moje pytanie brzmi, czy jest coś, co trzeba zrobić, aby otrzymać pierwszą wersję zapytania, aby powrócić wyników chcę? Być może ma to jakiś związek z kodowaniem URL? Wszelkie wskazówki od niektórych guru solr lub w inny sposób byłyby bardzo wdzięczne.
UWAGA: Nie jest to konieczne pytanie dotyczące faceting, ponieważ faceting faktycznie działa. Bardziej pytanie kwerendowe polega na tym, że nie mogę wykonać kwerendy w polu "łańcuchowym", mimo że wielkość liter i odstępy są dokładnie takie same jak wersji indeksowanej.
EDIT: Aby uzyskać więcej informacji na temat szlifowaniem można sprawdzić te blogu wpisu na nim:
- http://www.craftyfella.com/2010/01/faceting-and-multifaceting-syntax-in.html
- http://wiki.apache.org/solr/SimpleFacetParameters#facet.limit
Thanks
Dave
Arrhhh Posortowałem to ... Musisz wycenić wartości ze spacjami :) – CraftyFella