1 頁 (共 1 頁)

使用 RAMDirectory 建立Index {沒實體檔}

發表於 : 週四 9月 13, 2012 10:36 am
rusli
沒實體檔

代碼: 選擇全部

  static IndexSearcher CreateIndex(IList<string[]> data, Analyzer analyzer)
        {
            RAMDirectory dir = new RAMDirectory();
            IndexWriter wr = new IndexWriter(dir, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);

            foreach (var d in data)
            {
                Document doc = new Document();
                foreach (var s in d)
                {
                    doc.Add(new Field("field", s, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
                }

                wr.AddDocument(doc);
            }
           
            wr.Close();

            return new IndexSearcher(IndexReader.Open(dir, true));
        }



代碼: 選擇全部

        static IndexSearcher CreateIndex(string data, Analyzer analyzer)
        {
            RAMDirectory dir = new RAMDirectory();
            IndexWriter wr = new IndexWriter(dir, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
            Document doc = new Document();
            doc.Add(new Field("field", data, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
            wr.AddDocument(doc);
            wr.Close();

            return new IndexSearcher(IndexReader.Open(dir, true));
        }


主程式

發表於 : 週四 9月 13, 2012 10:37 am
rusli
取得 Index 後搜尋

代碼: 選擇全部


        static void Main(string[] args)
        {
            IList<string[]> data = new List<string[]>() { new[] { "1", "2", "3", "4" }, new string[] { "5", "2", "7", "8" } };
            Analyzer analyzer = new SingleCharTokenAnalyzer();
            IndexSearcher src = CreateIndex("someuser@gmail.com 1234567890 abcdefgh 8d6a9b53dfd24a0eb1a66831d5b47821", analyzer);
            IndexSearcher src1 = CreateIndex(data, analyzer);
         

            QueryParser p = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "field", analyzer);
            p.SetDefaultOperator(QueryParser.Operator.AND);
            p.SetEnablePositionIncrements(true);

            TopDocs td = null;

            td = src1.Search(p.Parse("1"), 10);
            Writer(1, td.TotalHits);
           
            td = src1.Search(p.Parse("2"), 10);
            Writer(2, td.TotalHits);

            td = src1.Search(p.Parse("0"), 10);
            Writer(0, td.TotalHits);


            td = src.Search(p.Parse("8d6a9b53dfd24a0eb1a66831d5b47821"), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("usergmail"), 10);
            Writer(0, td.TotalHits);

            td = src.Search(p.Parse("gmailcom"), 10);
            Writer(0, td.TotalHits);

            td = src.Search(p.Parse("678"), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("someuser"), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("omeuse"), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("omeuse 6789"), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("user gmail"), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("\"user gmail\""), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("user@gmail"), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("gmail.com"), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("\"gmail.com 1234\""), 10);
            Writer(1, td.TotalHits);

            td = src.Search(p.Parse("\"gmail.com defg\""), 10);
            Writer(0, td.TotalHits);

            td = src.Search(p.Parse("gmail.com defg"), 10);
            Writer(1, td.TotalHits);
        }