Точный поиск с Lucene.Net - PullRequest
       0

Точный поиск с Lucene.Net

0 голосов
/ 23 июля 2011

Я уже видел несколько похожих вопросов, но у меня до сих пор нет ответа.Я думаю, у меня есть простая проблема.

В предложении

В этом тексте важны только метафайлы и генерация тестов.Все остальное не имеет значения

Я хочу индексировать только метафайлы и генерацию тестов.Это означает, что мне нужно точное совпадение.Может кто-нибудь объяснить мне, как этого добиться?

А вот код:

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);
}

}

1 Ответ

0 голосов
/ 11 января 2013
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...