2011-07-22 8 views
0

J'ai déjà vu quelques questions similaires, mais je n'ai toujours pas de réponse. Je pense que j'ai un problème simple.Recherche exacte avec Lucene.Net

Dans phrase

Dans ce texte, seuls les fichiers Meta sont importants, et la génération de test. Tout le reste n'est pas pertinent

Je veux indexer uniquement les méta-fichiers et la génération de tests. Cela signifie que j'ai besoin d'une correspondance exacte. Quelqu'un peut-il m'expliquer s'il vous plaît comment y parvenir?

Et voici le code:

Analyzer analyzer = new StandardAnalyzer();     
Lucene.Net.Store.Directory directory = new RAMDirectory(); 
indexWriter iwriter = new IndexWriter(directory, analyzer, true); 
iwriter.SetMaxFieldLength(10000); 
Document doc = new Document(); 
doc.Add(new Field("textFragment", text, Field.Store.YES, Field.Index.TOKENIZED,  Field.TermVector.YES)); 
iwriter.AddDocument(doc); 
iwriter.Close(); 
IndexSearcher isearcher = new IndexSearcher(directory); 
QueryParser parser = new QueryParser("textFragment", analyzer); 

foreach (DictionaryEntry de in OntologyLayer.OntologyLayer.HashTable) 
{     
List<string> buffer = new List<string>(); 
double weight = 0; 
List<OntologyLayer.Term> list = (List<OntologyLayer.Term>)de.Value; 

foreach (OntologyLayer.Term t in list) 
{ 
    Hits hits = null; 
    string label = t.Label; 
    string[] words = label.Split(' ');       
    int numOfWords = words.Length; 
    double wordWeight = 1/(double)numOfWords;   
    double localWeight = 0; 
    foreach (string a in words) 
    { 
     try 
     { 
      if (!buffer.Contains(a)) 
      {          
       Lucene.Net.Search.Query query = parser.Parse(a); 
       hits = isearcher.Search(query); 
       if (hits != null && hits.Length() > 0) 
       {                                        
        localWeight = localWeight + t.Weight * wordWeight * hits.Length(); 
       } 
        buffer.Add(a); 
      } 
     } 
     catch (Exception ex) 
     {} 
    } 
     weight = weight + localWeight; 
} 

sbWeight.AppendLine(weight.ToString()); 

if (weight > 0) 
{ 
    string objectURI = (string)de.Key; 
    conceptList.Add(objectURI); 
} 

}

+0

Vous devez fournir des exemples d'entrées et de correspondances aux requêtes et aux résultats donnés. – fyr

+0

ok ... J'ai une ontologie avec des concepts. Je lis chaque cocnept et essaie de le trouver dans le texte. Dans ce cas, il doit retourner uniquement les fichiers Meta et génération de tests, mais je reçois: Random Number Generation, génération de test, traitement de texte, génération de langage, document et édition de texte, ligne et courbe génération, indépendant de la machine microcode génération, exécution du plan, la formation et la génération, Index génération, Meta Files, fichiers, analyse de texte, image génération des images, grandes archives de texte, document traitement du texte et – Srecko

Répondre

Questions connexes