2010-04-23 10 views
1

Je développe une boîte de suggestion pour mon service de recherche de site. Je doit rechercher des domaines comme ceux-ci:Lucene.Net PrefixQuery

Visual Basic Enterprise Edition
Visual C++
Visual J ++

Mon code est:

Directory dir = Lucene.Net.Store.FSDirectory.GetDirectory("Index", false); 

    IndexSearcher searcher = new Lucene.Net.Search.IndexSearcher(dir,true);  

    Term term = new Term("nombreAnalizado", _que); 

    PrefixQuery query = new PrefixQuery(term); 

    TopDocs topDocs = searcher.Search(query, 10000); 

Ce code fonctionne bien dans ce cas:

"Enterprise" correspondra "Visual Basic Enterprise Edition"

Mais "Enterprise E" ne correspond à rien. J'ai supprimé les espaces blancs au moment de l'indexation et lorsque l'utilisateur est en train de chercher.

Merci.

Répondre

2

Je pense que vous devriez utiliser le QueryParser et le laisser construire l'objet Query approprié au lieu d'utiliser quelque chose de spécifique comme PrefixQuery.

En Java:

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "nombreAnalizado", new StandardAnalyzer(Version.LUCENE_CURRENT)); 
Query query = parser.parse(_que); 

Assurez-vous que vous utilisez le même analyseur que vous avez utilisé pour l'indexation.

+0

Fonctionne très bien, merci !!! – Sole