2010-06-21 9 views
7

Nie mogę wydawać się dowiedzieć, jak znaleźć podciągi substring z SOLR, mam zorientowali się mecze oparte na przedrostek, dzięki czemu mogę uzyskać ham dopasować hamburger.Substring mecze w ramach SOLR

W jaki sposób mogę uzyskać "hamburgera" w celu dopasowania również hamburgera? Próbowałem burger, ale spowodowało to błąd "*" lub "?" niedozwolone jako pierwszy znak w WildcardQuery.

Jak mogę dopasować ciągi przy użyciu SOLR?

+0

Czy byłbyś tak uprzejmy i pisać kod, aby, jak to zrobiłeś meczu prefiks? – Roman

Odpowiedz

3

Możesz włączyć tę funkcję, ale będzie ona wymagać dużej ilości zasobów (np. Wyszukiwanie SuffixQuery).

Patrz: http://lucene.472066.n3.nabble.com/Leading-Wildcard-Search-td522362.html

Cytowanie listę mailingową: arounds działa? Wyobraź sobie tworzenie drugiego indeksu (lub dodawanie innego pola) z wszystkimi terminami pisanymi wstecz.

=>

Zobacz Dodaj ReverseStringFilter https://issues.apache.org/jira/browse/LUCENE-1398

i wsparcie dla wydajny wiodącym symboli wieloznacznych wyszukiwania: https://issues.apache.org/jira/browse/SOLR-1321

Obecnie issues.apache.org wydaje dół. Spróbuj użyć np. pamięć podręczna Google.

3

Jak wspomniano wcześniej w link można używać wiodących symboli wieloznacznych z edismax (ExtendedDismaxQParser). Po prostu spróbuj go sprawdzić, czy jest wystarczająco szybki.

trochę więcej informacji na temat powyższej reversedstring można również znaleźć tutaj: solr.ReversedWildcardFilterFactory

9

Jeśli ktoś kończy się tutaj po wyszukaniu „apachesolr podciągu”, jest to prostsze rozwiązanie tego problemu: https://drupal.stackexchange.com/a/27956/10419 (z https://drupal.stackexchange.com/questions/26024/how-can-i-make-search-with-a-substring-of-a-word)

Dodaj ngramfilter do definicji typu tekstu w pliku schema.xml w katalogu solr config .

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" /> 
+0

To mnie prześladuje od tygodni. Dziękuję za publikację, rozwiązał mój problem przy próbie filtrowania/wyszukiwania na podstawie podłańcucha. – Genzume

+0

Nie działałoby to w przypadku bardzo dużych zestawów danych. Pole Edge Gram będzie wymagać dużej ilości pamięci podczas indeksowania danych. – alpeshpandya