/ / Jak zamienić zapytanie, które przeszukuje dane SOLR, w małe litery? - wyszukiwanie, solr, małe litery, analizator

Jak zamienić zapytanie, które przeszukuje dane SOLR, w małe litery? - wyszukiwanie, solr, małe litery, analizator

Mój plik scheme.xlm wygląda następująco:

<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"/>

Powinno to zindeksować pole małymi literami, a także przekształcić zapytanie wyszukiwania na małe litery.

Dane, które chcę znaleźć, to: "Nokia Lumia 610"

Kiedy szukam "nokia", otrzymuję oczekiwany wynik, ale podczas wyszukiwania tylko "Nokia" (wielkie litery N) nie ma żadnych wyników.

Powyższy "analizator" wykonuje małe litery tylko w indeksie, ale nie w zapytaniu.

Czy to błąd? Jak zmusić indeksy SOLR i zapytanie do wyszukiwania małymi literami?

Odpowiedzi:

3 dla odpowiedzi № 1

Przekształcenie zapytania wyszukiwania również zależyna typ zapytania i analizator, którego używasz. Na przykład powyższe nie zamieni twojego zapytania na małe, jeśli wysyłasz żądanie do analizatora select. Jeśli wysyłasz prośbę: -

http://url/solr/select?q=Nokia

to powyższe nie zostanie zamienione na małe, ponieważ wybrany analizator nie jest obecny w twojej definicji typu pola. Będziesz musiał zmodyfikować swój kod w następujący sposób:

    <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>

jeśli powyższe nie działa, prosimy o przesłanie żądania, które wysyłasz, oraz o wynik dodania debugQuery = true do żądania.


0 dla odpowiedzi nr 2

Wraz z

<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>

w pliku schema.xml.

Zmiana head.vm return $ ("# q"). val (); do return $ ("# q"). val (). toLowerCase (); dla funkcji autouzupełniania InCaseSensitive. Aby uzyskać wyniki, jeśli przeszukujesz literami Capital.