Exemple #1
0
        /// <summary> Constructs a filter for field <code>f</code> matching times
        /// on or before <code>time</code>.
        /// </summary>
        public static DateFilter Before(System.String field, long time)
        {
            DateFilter result = new DateFilter(field);

            result.end = DateField.TimeToString(time);
            return(result);
        }
Exemple #2
0
 /// <summary> Constructs a filter for field <code>f</code> matching times
 /// between <code>from</code> and <code>to</code> inclusively.
 /// </summary>
 public DateFilter(System.String f, long from, long to)
 {
     InitBlock();
     field = f;
     start = DateField.TimeToString(from);
     end   = DateField.TimeToString(to);
 }
Exemple #3
0
        /// <summary> Constructs a filter for field <code>f</code> matching
        /// dates on or before before <code>date</code>.
        /// </summary>
        public static DateFilter Before(System.String field, System.DateTime date)
        {
            DateFilter result = new DateFilter(field);

            result.end = DateField.DateToString(date);
            return(result);
        }
Exemple #4
0
        /// <summary> Constructs a filter for field <code>f</code> matching
        /// times on or after <code>time</code>.
        /// </summary>
        public static DateFilter After(System.String field, long time)
        {
            DateFilter result = new DateFilter(field);

            result.start = DateField.TimeToString(time);
            return(result);
        }
Exemple #5
0
 /// <summary> Constructs a filter for field <code>f</code> matching dates
 /// between <code>from</code> and <code>to</code> inclusively.
 /// </summary>
 public DateFilter(System.String f, System.DateTime from, System.DateTime to)
 {
     InitBlock();
     field = f;
     start = DateField.DateToString(from);
     end   = DateField.DateToString(to);
 }
Exemple #6
0
        /// <summary> Constructs a filter for field <code>f</code> matching
        /// dates on or after <code>date</code>.
        /// </summary>
        public static DateFilter After(System.String field, System.DateTime date)
        {
            DateFilter result = new DateFilter(field);

            result.start = DateField.DateToString(date);
            return(result);
        }
Exemple #7
0
 public override System.String ToString()
 {
     System.Text.StringBuilder buffer = new System.Text.StringBuilder();
     buffer.Append(field);
     buffer.Append(":");
     buffer.Append(DateField.StringToDate(start).ToString("r"));
     buffer.Append("-");
     buffer.Append(DateField.StringToDate(end).ToString("r"));
     return(buffer.ToString());
 }
Exemple #8
0
        public virtual void  TestAfter()
        {
            // create an index
            RAMDirectory indexStore = new RAMDirectory();
            IndexWriter  writer     = new IndexWriter(indexStore, new SimpleAnalyzer(), true);

            long now = (System.DateTime.Now.Ticks - 621355968000000000) / 10000;

            Document doc = new Document();

            // add time that is in the future
            doc.Add(Field.Keyword("datefield", DateField.TimeToString(now + 888888)));
            doc.Add(Field.Text("body", "Today is a very sunny day in New York City"));
            writer.AddDocument(doc);
            writer.Optimize();
            writer.Close();

            IndexSearcher searcher = new IndexSearcher(indexStore);

            // filter that should preserve matches
            DateFilter df1 = DateFilter.After("datefield", now);

            // filter that should discard matches
            DateFilter df2 = DateFilter.After("datefield", now + 999999);

            // search something that doesn't exist with DateFilter
            Query query1 = new TermQuery(new Term("body", "NoMatchForThis"));

            // search for something that does exists
            Query query2 = new TermQuery(new Term("body", "sunny"));

            Hits result;

            // ensure that queries return expected results without DateFilter first
            result = searcher.Search(query1);
            Assert.AreEqual(0, result.Length());

            result = searcher.Search(query2);
            Assert.AreEqual(1, result.Length());


            // run queries with DateFilter
            result = searcher.Search(query1, df1);
            Assert.AreEqual(0, result.Length());

            result = searcher.Search(query1, df2);
            Assert.AreEqual(0, result.Length());

            result = searcher.Search(query2, df1);
            Assert.AreEqual(1, result.Length());

            result = searcher.Search(query2, df2);
            Assert.AreEqual(0, result.Length());
        }
Exemple #9
0
        /// <summary>Makes a document for a File.
        /// <p>
        /// The document has three fields:
        /// <ul>
        /// <li><code>path</code>--containing the pathname of the file, as a stored,
        /// tokenized Field;
        /// <li><code>modified</code>--containing the last modified date of the file as
        /// a keyword Field as encoded by <a
        /// href="lucene.document.DateField.html">DateField</a>; and
        /// <li><code>contents</code>--containing the full contents of the file, as a
        /// Reader Field;
        /// </summary>
        public static Document Document(System.IO.FileInfo f)
        {
            // make a new, empty document
            Document doc = new Document();

            // Add the path of the file as a Field named "path".  Use a Text Field, so
            // that the index stores the path, and so that the path is searchable
            doc.Add(Field.Text("path", f.FullName));

            // Add the last modified date of the file a Field named "modified".  Use a
            // Keyword Field, so that it's searchable, but so that no attempt is made
            // to tokenize the Field into words.
            doc.Add(Field.Keyword("modified", DateField.TimeToString(((f.LastWriteTime.Ticks - 621355968000000000) / 10000))));

            // Add the contents of the file a Field named "contents".  Use a Text
            // Field, specifying a Reader, so that the text of the file is tokenized.
            // ?? why doesn't FileReader work here ??
            System.IO.FileStream   is_Renamed = new System.IO.FileStream(f.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            System.IO.StreamReader reader     = new System.IO.StreamReader(new System.IO.StreamReader(is_Renamed, System.Text.Encoding.Default).BaseStream, new System.IO.StreamReader(is_Renamed, System.Text.Encoding.Default).CurrentEncoding);
            doc.Add(Field.Text("contents", reader));

            // return the document
            return(doc);
        }
Exemple #10
0
 public virtual System.String GetDate(System.String s)
 {
     return(DateField.DateToString(DateTime.Parse(s)));
 }
Exemple #11
0
 private void  InitBlock()
 {
     start = DateField.MIN_DATE_STRING();
     end   = DateField.MAX_DATE_STRING();
 }