Esempio n. 1
0
        /// <summary>
        /// 新增某个用户的索引
        /// </summary>
        /// <param name="user"></param>
        public void AddUserIndex(List <UserInfo> users, int maxshopId)
        {
            var isNew          = false;
            var path           = _indexPath + "\\" + maxshopId;
            var directory      = FSDirectory.Open(path);
            var maxFieldLength = new IndexWriter.MaxFieldLength(IndexWriter.DEFAULT_MAX_FIELD_LENGTH);

            isNew = !IndexReader.IndexExists(directory);

            // 添加到文件索引
            var analyzer = new StandardAnalyzer(Version.LUCENE_30);

            using (var writer = new IndexWriter(directory, analyzer, isNew, maxFieldLength))
            {
                foreach (var user in users)
                {
                    var document = new Document();

                    document.Add(new Field("UserId", user.UserId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    document.Add(new Field("ShopId", user.ShopId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    document.Add(new Field("UPinYinShort", user.UPinYinShort.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    document.Add(new Field("UPinYinFull", user.UPinYinFull.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    document.Add(new Field("Name", user.Name.ToString(), Field.Store.YES, Field.Index.ANALYZED));

                    if (!string.IsNullOrWhiteSpace(user.Phone))
                    {
                        document.Add(new Field("Phone", user.Phone.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    }
                    if (!string.IsNullOrWhiteSpace(user.Number))
                    {
                        document.Add(new Field("Number", user.Number.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    }


                    writer.AddDocument(document);
                }

                writer.Optimize();
            }

            // 添加到内存索引
            var ramDirectory = RamDirectoryFactory.GetRamDirectory(path, directory);

            using (var writer = new IndexWriter(ramDirectory, analyzer, isNew, maxFieldLength))
            {
                foreach (var user in users)
                {
                    var document = new Document();

                    document.Add(new Field("UserId", user.UserId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    document.Add(new Field("ShopId", user.ShopId.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    document.Add(new Field("UPinYinShort", user.UPinYinShort.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    document.Add(new Field("UPinYinFull", user.UPinYinFull.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    document.Add(new Field("Name", user.Name.ToString(), Field.Store.YES, Field.Index.ANALYZED));

                    if (!string.IsNullOrWhiteSpace(user.Phone))
                    {
                        document.Add(new Field("Phone", user.Phone.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    }
                    if (!string.IsNullOrWhiteSpace(user.Number))
                    {
                        document.Add(new Field("Number", user.Number.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                    }

                    writer.AddDocument(document);
                }

                writer.Optimize();
            }
        }