2010-05-14 13 views
6

Korzystam z interfejsu API Lucene.NET bezpośrednio w mojej aplikacji internetowej ASP.NET/C#. Gdy wyszukuję za pomocą symbolu wieloznacznego, np. "Fuc *", wyróżnienia nie podświetlają niczego, ale gdy wyszukuję całe słowo, np. "Fuksja", to podkreśla ono dobrze. Czy Lucene ma zdolność podświetlania za pomocą tej samej logiki, której używał do dopasowania?Jak mogę Lucene (.NET) podświetlić poprawnie za pomocą symboli wieloznacznych?

Różne może, odpowiednie fragmenty kodu poniżej:

var formatter = new Lucene.Net.Highlight.SimpleHTMLFormatter(
    "<span class='srhilite'>", 
    "</span>"); 

var fragmenter = new Lucene.Net.Highlight.SimpleFragmenter(100); 
var scorer = new Lucene.Net.Highlight.QueryScorer(query); 
var highlighter = new Lucene.Net.Highlight.Highlighter(formatter, scorer); 
highlighter.SetTextFragmenter(fragmenter); 

a następnie na każdym trafieniu ...

string description = Server.HtmlEncode(doc.Get("Description")); 
var stream = analyzer.TokenStream("Description", 
    new System.IO.StringReader(description)); 
string highlighted_text = highlighter.GetBestFragments(
    stream, description, 1, "..."); 

I używam QueryParser i StandardAnalyzer.

Odpowiedz

4

musisz upewnić się, że ustawiłeś metodę przepisywania analizatora składni na SCORING_BOOLEAN_QUERY_REWRITE.

Ta zmiana wydaje się niezbędna, ponieważ pojawił się Lucene v2.9.

Mam nadzieję, że to pomoże,

+0

Errr ... jak? Z tego, co widziałem w dokumentach, potrzebuję MultiTermQuery, aby z tym pomieszać, ale mam tylko kwerendę. Czy powinienem przetestować typ MultiTermQuery i odrzucić? –

+0

Próbowałem na ślepo: query = parser.Parse (searchText); if (query.GetType() == typeof (Lucene.Net.Search.PrefixQuery)) { (zapytanie (Lucene.Net.Search.PrefixQuery)) .SetRewriteMethod (Lucene.Net.Search.PrefixQuery.SCORING_BOOLEAN_QUERY_REWRITE); } i to pogarszało sprawę. –

+2

Właściwie zamierzałem ustawić styl przerobienia na analizatorze składni. tj. za pomocą metody SetMultiTermRewriteMethod obiektu analizatora składni. HTH –

Powiązane problemy