2011-01-12 9 views
5

Ostatnio uczę się, jak przechowywać i indeksować za pomocą Solr. Chcę wykonać wyszukiwanie facet.prefix. Przy użyciu białego znacznika "Where are you" zostanie podzielony na trzy słowa i zindeksowany. Jeśli przeszukuję facet.prefix = "where is", żaden wynik nie zostanie zwrócony.Jak korzystać z NGramTokenizerFactory lub NGramFilterFactory?

Ja google i znalazłem NGramFilterFactory może mi pomóc. Ale kiedy zastosowałem tę fabrykę filtrów, stwierdziłem, że wynikiem jest "w, h, e, ..., wh, ..", które podzieliły zdanie na znak, a nie słowo tokena.

Używam parametrów maxGramSize i minGramSize, ustawionych na 1 i 3. Czy NGRAMFilterFactory działa poprawnie? Czy powinienem dodać jakieś inne parametry? Czy są jakieś inne fabryki filtrów, które mogą mi pomóc?

Dzięki!

+0

Tak, właśnie tak działa ngram. W jakim kontekście używasz facet.prefix? –

+0

Niezupełnie dla ciebie odpowiedź, ale wyjaśnienie. NGram działa na poszczególnych postaciach. Może przyjąć słowo "kot" i podzielić je na żetony, takie jak "c", "a", "t", "ca", "at" i "cat". Wygląda * tak, jakbyś chciał mieć to, co nazywa się tokenizatorem gontowym, które działa tak samo, ale na poziomie słowa zamiast poziomu postaci. – rfeak

+0

Witam Mauricio, chcę użyć facet.prefix do autouzupełniania. W przypadku metody domyślnej trzy słowa zostaną zindeksowane osobno. Podczas wyszukiwania facet.prefix oczywiście wyszukiwanie "w" zwróci "where", ale wyszukiwanie "where", nic nie zostanie zwrócone. Dlatego chcę dodać tokeny do indeksowania. – user572485

Odpowiedz

1

Aspekty należy stosować tylko w polach niezgejestrowanych, takich jak łańcuchy. jeśli chcesz, aby wyniki były wyświetlane dla "co to jest", nie używaj w ogóle żadnego tokenu dla tego pola (lub dyrektywy copyField). Chyba chcesz użyć facet.prefix do autouzupełniania. możesz to zrobić, look here.

dla ngramtokenizer check this out.

Powiązane problemy