zoukankan      html  css  js  c++  java
  • Lucence.Net 2.9.3 日期范围搜索

    关键步骤如下:

    1.将 DateTime 转换成 long 型。
    2.索引时要使用 NumericField 进行索引
    3.搜索时使用 NumericRangeQuery 进行查询

     事例代码如下:

      [TestMethod()]

            public void RangTest()
            {
                RAMDirectory mDirInfo 
    = new RAMDirectory();
                IndexWriter mIndexWriter 
    = new IndexWriter(mDirInfo, CAnalyzerLoader.GetAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED);
                mIndexWriter.AddDocument(GetDocumentByModel(
    1"姑姑,我是态儿", CDateTime.UNIX_TIMESTAMP(System.DateTime.Now.AddDays(-1))));
                mIndexWriter.AddDocument(GetDocumentByModel(
    2"B儿,我是态儿", CDateTime.UNIX_TIMESTAMP(System.DateTime.Now.AddDays(-2))));
                mIndexWriter.AddDocument(GetDocumentByModel(
    3"肝儿,我是态儿", CDateTime.UNIX_TIMESTAMP(System.DateTime.Now.AddDays(-3))));
                mIndexWriter.Close();
                
    long upper = CDateTime.UNIX_TIMESTAMP(DateTime.Now.AddDays(-1));
                
    long lower = CDateTime.UNIX_TIMESTAMP(DateTime.Now.AddDays(-3).AddHours(-1));
                NumericRangeQuery rangeQuery 
    = NumericRangeQuery.NewLongRange("UpdateOn", lower, upper, truetrue);

                IndexSearcher mSearcher 
    = new IndexSearcher(mDirInfo, true);
                TopDocs topDocs 
    = mSearcher.Search(rangeQuery, 100);
                Assert.AreEqual(
    2, topDocs.totalHits);
            }

            
    private Document GetDocumentByModel(int tid,string title,long time)
            {
                Document doc 
    = new Document();
                doc.AddFiled(
    "Id", tid.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED)
                    .AddFiled(
    "Title", title.Trim(), Field.Store.YES, Field.Index.ANALYZED)
                    .AddLongFiled(
    "UpdateOn", time, Field.Store.NO, true);
                
    return doc;
            }
            
    public static Document AddFiled(this Document self, string name, string value, Field.Store fStore, Field.Index fIndex)
            {
                Field filed 
    = new Field(name, value, fStore, fIndex);
                self.Add(filed);
                
    return self;
            }
            
    public static Document AddLongFiled(this Document self, string name, long value, Field.Store fStore, bool bIndex)
            {
                NumericField filed 
    = new NumericField(name, NumericUtils.PRECISION_STEP_DEFAULT, fStore, bIndex).SetLongValue(value);
                self.Add(filed);
                
    return self;
            }
  • 相关阅读:
    新概念英语(1-115)Knock! Knock!
    新概念英语(1-113)Small Change
    新概念英语(1-111)The most expensive model
    新概念英语(1-109)A Good Idea
    新概念英语(1-107)It's Too Small.
    新概念英语(1-105)Full Of Mistakes
    新概念英语(1-103)The French Test
    洛谷P4591 [TJOI2018]碱基序列(hash dp)
    洛谷P4492 [HAOI2018]苹果树(组合数)
    洛谷P4577 [FJOI2018]领导集团问题(dp 线段树合并)
  • 原文地址:https://www.cnblogs.com/nasdaqhe/p/2042331.html
Copyright © 2011-2022 走看看