当前位置: 首页>>代码示例>>C#>>正文


C# IndexSearcher.DocFreq方法代码示例

本文整理汇总了C#中Lucene.Net.Search.IndexSearcher.DocFreq方法的典型用法代码示例。如果您正苦于以下问题:C# IndexSearcher.DocFreq方法的具体用法?C# IndexSearcher.DocFreq怎么用?C# IndexSearcher.DocFreq使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Lucene.Net.Search.IndexSearcher的用法示例。


在下文中一共展示了IndexSearcher.DocFreq方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: TestKnownSetOfDocuments

 public virtual void  TestKnownSetOfDocuments()
 {
     System.String test1 = "eating chocolate in a computer lab"; //6 terms
     System.String test2 = "computer in a computer lab"; //5 terms
     System.String test3 = "a chocolate lab grows old"; //5 terms
     System.String test4 = "eating chocolate with a chocolate lab in an old chocolate colored computer lab"; //13 terms
     System.Collections.IDictionary test4Map = new System.Collections.Hashtable();
     test4Map["chocolate"] = 3;
     test4Map["lab"] = 2;
     test4Map["eating"] = 1;
     test4Map["computer"] = 1;
     test4Map["with"] = 1;
     test4Map["a"] = 1;
     test4Map["colored"] = 1;
     test4Map["in"] = 1;
     test4Map["an"] = 1;
     test4Map["computer"] = 1;
     test4Map["old"] = 1;
     
     Document testDoc1 = new Document();
     SetupDoc(testDoc1, test1);
     Document testDoc2 = new Document();
     SetupDoc(testDoc2, test2);
     Document testDoc3 = new Document();
     SetupDoc(testDoc3, test3);
     Document testDoc4 = new Document();
     SetupDoc(testDoc4, test4);
     
     Directory dir = new MockRAMDirectory();
     
     try
     {
         IndexWriter writer = new IndexWriter(dir, new SimpleAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED);
         Assert.IsTrue(writer != null);
         writer.AddDocument(testDoc1);
         writer.AddDocument(testDoc2);
         writer.AddDocument(testDoc3);
         writer.AddDocument(testDoc4);
         writer.Close();
         IndexSearcher knownSearcher = new IndexSearcher(dir, true);
         TermEnum termEnum = knownSearcher.reader_ForNUnit.Terms();
         TermDocs termDocs = knownSearcher.reader_ForNUnit.TermDocs();
         //System.out.println("Terms: " + termEnum.size() + " Orig Len: " + termArray.length);
         
         Similarity sim = knownSearcher.Similarity;
         while (termEnum.Next() == true)
         {
             Term term = termEnum.Term;
             //System.out.println("Term: " + term);
             termDocs.Seek(term);
             while (termDocs.Next())
             {
                 int docId = termDocs.Doc;
                 int freq = termDocs.Freq;
                 //System.out.println("Doc Id: " + docId + " freq " + freq);
                 ITermFreqVector vector = knownSearcher.reader_ForNUnit.GetTermFreqVector(docId, "field");
                 float tf = sim.Tf(freq);
                 float idf = sim.Idf(knownSearcher.DocFreq(term), knownSearcher.MaxDoc);
                 //float qNorm = sim.queryNorm()
                 //This is fine since we don't have stop words
                 float lNorm = sim.LengthNorm("field", vector.GetTerms().Length);
                 //float coord = sim.coord()
                 //System.out.println("TF: " + tf + " IDF: " + idf + " LenNorm: " + lNorm);
                 Assert.IsTrue(vector != null);
                 System.String[] vTerms = vector.GetTerms();
                 int[] freqs = vector.GetTermFrequencies();
                 for (int i = 0; i < vTerms.Length; i++)
                 {
                     if (term.Text.Equals(vTerms[i]))
                     {
                         Assert.IsTrue(freqs[i] == freq);
                     }
                 }
             }
             //System.out.println("--------");
         }
         Query query = new TermQuery(new Term("field", "chocolate"));
         ScoreDoc[] hits = knownSearcher.Search(query, null, 1000).ScoreDocs;
         //doc 3 should be the first hit b/c it is the shortest match
         Assert.IsTrue(hits.Length == 3);
         float score = hits[0].Score;
         /*System.out.println("Hit 0: " + hits.id(0) + " Score: " + hits.score(0) + " String: " + hits.doc(0).toString());
         System.out.println("Explain: " + knownSearcher.explain(query, hits.id(0)));
         System.out.println("Hit 1: " + hits.id(1) + " Score: " + hits.score(1) + " String: " + hits.doc(1).toString());
         System.out.println("Explain: " + knownSearcher.explain(query, hits.id(1)));
         System.out.println("Hit 2: " + hits.id(2) + " Score: " + hits.score(2) + " String: " +  hits.doc(2).toString());
         System.out.println("Explain: " + knownSearcher.explain(query, hits.id(2)));*/
         Assert.IsTrue(hits[0].Doc == 2);
         Assert.IsTrue(hits[1].Doc == 3);
         Assert.IsTrue(hits[2].Doc == 0);
         ITermFreqVector vector2 = knownSearcher.reader_ForNUnit.GetTermFreqVector(hits[1].Doc, "field");
         Assert.IsTrue(vector2 != null);
         //System.out.println("Vector: " + vector);
         System.String[] terms = vector2.GetTerms();
         int[] freqs2 = vector2.GetTermFrequencies();
         Assert.IsTrue(terms != null && terms.Length == 10);
         for (int i = 0; i < terms.Length; i++)
         {
             System.String term = terms[i];
             //System.out.println("Term: " + term);
//.........这里部分代码省略.........
开发者ID:Nangal,项目名称:lucene.net,代码行数:101,代码来源:TestTermVectors.cs


注:本文中的Lucene.Net.Search.IndexSearcher.DocFreq方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。