Używam fasetowania solr i napotkałem problem, który miałem nadzieję, że mogę obejść za pomocą filtrów.
Zasadniczo czasami nazwa miasta przejdzie do SOLR as
„CAMBRIDGE”
i kiedyś to nastąpi
„Cambridge”
Chciałem użyć filtra w Solr, aby zatrzymać wersję nazwy miasta KRZYWE KAPTURY. Wygląda na to, że do napisania całego tekstu jest fitler małe litery.
<!-- A text field that only sorts out casing for faceting -->
<fieldType name="text_facet" 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>
Zastanawiałem się, czy ktokolwiek wiedział o filtrze, który zignoruje pierwszy znak słowa i zastosuje małe litery do pozostałych znaków. Na przykład.
- CAMBRIDGE >> Cambridge
- KingsTON Upon HULL >> Kingston Upon Hull
itp
Alternatywnie, jeśli łatwo jest napisać własne filtry .. pomoc w tym, jak to zrobić, byłby mile widziany .. Nie jestem osobą Java ..
Dzięki
Odpowiedzi:
2 dla odpowiedzi № 1AFAIK nie ma takiego wbudowanego filtra. Jeśli chcesz to napisać, zobacz LowerCaseFilterFactory i LowerCaseFilter dla porównania, nie wydaje się to być bardzo trudne.
Lub możesz to zrobić po stronie klienta, tj. W SolrNet możesz napisać dekorator ISolrOperations, który dokonuje niezbędnych przekształceń po prawdziwym zapytaniu, używając ToTitleCase.
1 dla odpowiedzi nr 2
Być może mógłbyś skorzystać z solr.PatternReplaceCharFilterFactory?
<fieldType name="textCharNorm" class="solr.TextField">
<analyzer>
<filter class="solr.LowerCaseFilterFactory"/>
<charFilter class="solr.PatternReplaceCharFilterFactory"
pattern="([^s]{1})([^s]*)" replaceWith="U$1L$2"/>
</analyzer>
</fieldType>
Zauważ, że nie testowałem kodu ani solr.PatternReplaceCharFilterFactory, więc nie jestem pewien, czy to działa. Jeśli potrzebujesz zbudować własny filtr, ten poradnik może być przydatny:
http://robotlibrarian.billdueber.com/building-a-solr-text-filter-for-normalizing-data/
// Jan