Exemplo n.º 1
0
    //根据id添加或者修改索引
    public void InsertOrUpdate <T>(T model)
    {
        var doc  = LuceneTool.CreateDoc(model);
        var term = new Term("Id", doc.Get("Id"));

        LuceneTool.GetIndexWriter(indexName).UpdateDocument(term, doc);
    }
Exemplo n.º 2
0
 //批量添加索引
 public void InsertMany <T>(IEnumerable <T> list)
 {
     foreach (var item in list)
     {
         var doc = LuceneTool.CreateDoc(item);
         LuceneTool.GetIndexWriter(indexName).AddDocument(doc);
     }
 }
Exemplo n.º 3
0
 //加入其它索引
 public void AppendIndexs(params string[] indexs)
 {
     foreach (var item in indexs)
     {
         Directory dir = LuceneTool.GetDirectory(item);
         LuceneTool.GetIndexWriter(indexName).AddIndexesNoOptimize(dir);
     }
 }
Exemplo n.º 4
0
 //根据ids批量发删除数据
 public void DeleteByIds(IEnumerable <object> ids)
 {
     foreach (var id in ids)
     {
         Term term = new Term("Id", id.ToString());
         LuceneTool.GetIndexWriter(indexName).DeleteDocuments(term);
     }
 }
Exemplo n.º 5
0
 //批量根据id添加或者修改索引
 public void InsertOrUpdateMany <T>(IEnumerable <T> list)
 {
     foreach (var item in list)
     {
         var doc  = LuceneTool.CreateDoc(item);
         var term = new Term("Id", doc.Get("Id"));
         LuceneTool.GetIndexWriter(indexName).UpdateDocument(term, doc);
     }
 }
Exemplo n.º 6
0
    public LuceneMultiConnection(params string[] indexNames)
    {
        readers = new IndexReader[indexNames.Length];

        for (int i = 0; i < indexNames.Length; i++)
        {
            readers[i] = LuceneTool.GetIndexReader(indexNames[i]);
        }
        multiReader   = new MultiReader(readers, false); //不关闭Readers
        indexSearcher = new IndexSearcher(multiReader);
    }
Exemplo n.º 7
0
 //公共提交方法
 private void Save()
 {
     try
     {
         LuceneTool.GetSemaphore(indexName).Wait();
         LuceneTool.RecoveryOldIndexReader(indexName); //回收旧的IndexReader
         LuceneTool.GetIndexWriter(indexName).Commit();
     }
     finally
     {
         LuceneTool.GetSemaphore(indexName).Release();
     }
 }
Exemplo n.º 8
0
 //读取doc文档
 public static IEnumerable <T> ReadModels <T>(Searcher indexSearcher, TopDocs topDocs, string returnFields = null)
     where T : class, new()
 {
     if (topDocs.TotalHits == 0)
     {
         yield break;
     }
     foreach (var scoreDoc in topDocs.ScoreDocs)
     {
         Document doc;
         if (returnFields == null)
         {
             doc = indexSearcher.Doc(scoreDoc.Doc);
         }
         else
         {
             string[]         fieldArr = returnFields.Split(',');
             MapFieldSelector field    = new MapFieldSelector(fieldArr);//指定返回列
             doc = indexSearcher.Doc(scoreDoc.Doc, field);
         }
         yield return(LuceneTool.CreateModel <T>(doc));
     }
 }
Exemplo n.º 9
0
    //读取doc文档
    public static IEnumerable <T> ReadModels <T>(Searcher indexSearcher, TopDocs topDocs, int skip, string returnFields = null)
        where T : class, new()
    {
        if (skip >= topDocs.TotalHits)
        {
            yield break;
        }

        for (int i = skip; i < topDocs.ScoreDocs.Length; i++)
        {
            Document doc;
            if (returnFields == null)
            {
                doc = indexSearcher.Doc(topDocs.ScoreDocs[i].Doc);
            }
            else
            {
                string[]         fieldArr = returnFields.Split(',');
                MapFieldSelector field    = new MapFieldSelector(fieldArr);//指定返回列
                doc = indexSearcher.Doc(topDocs.ScoreDocs[i].Doc, field);
            }
            yield return(LuceneTool.CreateModel <T>(doc));
        }
    }
Exemplo n.º 10
0
 //优化索引
 public void Optimize()
 {
     LuceneTool.GetIndexWriter(indexName).Optimize();
 }
Exemplo n.º 11
0
 //根据Terms删除
 public void Delete(params Term[] terms)
 {
     LuceneTool.GetIndexWriter(indexName).DeleteDocuments(terms);
 }
Exemplo n.º 12
0
 //根据Term删除
 public void Delete(Term term)
 {
     LuceneTool.GetIndexWriter(indexName).DeleteDocuments(term);
 }
Exemplo n.º 13
0
 //根据Querys删除
 public void Delete(params Query[] queries)
 {
     LuceneTool.GetIndexWriter(indexName).DeleteDocuments(queries);
 }
Exemplo n.º 14
0
 //根据Query删除
 public void Delete(Query q)
 {
     LuceneTool.GetIndexWriter(indexName).DeleteDocuments(q);
 }
Exemplo n.º 15
0
 //根据字段获取数据
 public IEnumerable <T> GetByField <T>(string fieldName, string value, string returnFields = null) where T : class, new()
 {
     return(LuceneTool.GetByField <T>(indexSearcher, fieldName, value, returnFields));
 }
Exemplo n.º 16
0
 //删除所有数据
 public void DeleteAll()
 {
     LuceneTool.GetIndexWriter(indexName).DeleteAll();
 }
Exemplo n.º 17
0
 public IEnumerable <T> GetByQuery <T>(Query q, string returnFields = null, Sort sort = null, Filter filter = null, int maxReturnNum = int.MaxValue) where T : class, new()
 {
     return(LuceneTool.GetByQuery <T>(indexSearcher, q, returnFields, sort, filter, maxReturnNum));
 }
Exemplo n.º 18
0
 public IEnumerable <T> GetAll <T>(string returnFields = null, Sort sort = null)
     where T : class, new()
 {
     return(LuceneTool.GetAll <T>(indexSearcher, returnFields, sort));
 }
Exemplo n.º 19
0
 public IEnumerable <T> GetByPage <T>(int pageIndex, int pageSize, out int total, string returnFields = null, Query q = null, Sort sort = null, Filter filter = null, int maxReturnNum = int.MaxValue) where T : class, new()
 {
     return(LuceneTool.GetByPage <T>(indexSearcher, pageIndex, pageSize, out total, returnFields, q, sort, filter, maxReturnNum));
 }
Exemplo n.º 20
0
    //添加索引
    public void Insert <T>(T model)
    {
        var doc = LuceneTool.CreateDoc(model);

        LuceneTool.GetIndexWriter(indexName).AddDocument(doc);
    }
Exemplo n.º 21
0
 //根据id获取一条数据
 public T GetById <T>(object id, string returnFields = null) where T : class, new()
 {
     return(LuceneTool.GetById <T>(indexSearcher, id, returnFields));
 }
Exemplo n.º 22
0
 //根据ids获取数据
 public IEnumerable <T> GetByIds <T>(IEnumerable <object> ids, string returnFields = null) where T : class, new()
 {
     return(LuceneTool.GetByIds <T>(indexSearcher, ids, returnFields));
 }
Exemplo n.º 23
0
    //根据id删除数据
    public void DeleteById(object id)
    {
        Term term = new Term("Id", id.ToString());

        LuceneTool.GetIndexWriter(indexName).DeleteDocuments(term);
    }
Exemplo n.º 24
0
 //根据字段ids获取数据
 public IEnumerable <T> GetByFieldIn <T>(string fieldName, IEnumerable <string> ids, string returnFields = null) where T : class, new()
 {
     return(LuceneTool.GetByFieldIn <T>(indexSearcher, fieldName, ids, returnFields));
 }
Exemplo n.º 25
0
 public int GetTotal(Query q = null)
 {
     return(LuceneTool.GetTotal(indexSearcher, q));
 }