Môj schéma.xlm vyzerá takto:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- The searched field -->
<field name="product_name" type="text" indexed="true" stored="true"/>
Malo by to indexovať pole malými písmenami a transformovať vyhľadávací dopyt do malých písmen.
Údaje, ktoré chcem nájsť, sú: "Nokia Lumia 610"
Keď hľadám "nokia", získam očakávaný výsledok, ale nie pri vyhľadávaní len "Nokia" (veľké písmeno N) nie sú k dispozícii žiadne výsledky.
Hore "analyzátor" vykonáva malý počet iba na indexe, ale nie na vyhľadávacom dopyte.
Je to chyba? Ako vytlačiť indexy SOLR a vyhľadávací dopyt malými písmenami?
odpovede:
3 pre odpoveď č. 1Transformácia vyhľadávacieho dotazu tiež závisío type dotazu a analyzátorovi, ktorý používate. Napríklad vyššie uvedené informácie nebudú konvertovať vyhľadávací dopyt na malé písmená, ak posielate žiadosť na vybratý analyzátor. Ak posielate žiadosť: -
http://url/solr/select?q=Nokia
potom vyššie uvedené nie sú konvertované na malé písmená, pretože vybraný analyzátor nie je vo vašej definícii poľa typu. Budete musieť upraviť svoj kód takto:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="select">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
ak vyššie uvedené nepomôže, pošlite prosím žiadosť, ktorú odosielate a výstup pridania debugQuery = true k žiadosti.
0 pre odpoveď č. 2
Spolu s
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="select">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
v schéme.xml.
Pri zmene head.vm návrat $ ("# q") val (); na návrat $ ("# q") val (). toLowerCase (); pre funkciu automatického dopĺňania funkcie InCaseSensitive. Aby ste dosiahli výsledok, ak hľadáte pomocou kapitálových písmen.