コード例 #1
0
ファイル: DataInterfaceConfig.cs プロジェクト: xy19xiaoyu/TG
        /// <summary>
        /// 得到配置文件下的所有索引入口
        /// </summary>
        /// <returns></returns>
        public List<Key> GetSearchEnterKey()
        {
            List<Key> results = new List<Key>();
            List<SearchEnter> lstEnter = SearchEnters;
            foreach (SearchEnter se in lstEnter)
            {
                if (se.Index == 0)
                {
                    continue;
                }
                if (se.SingleFile == true)
                {
                    Key key = new Key()
                    {
                        Name = se.Name,
                        Length = se.Length,
                        Encoder = getKeyType(se.WordSplit),
                    };
                    if (se.WordSplit == WordSplitType.None)
                    {
                        if (se.Name == "TX" || se.Name == "KW")
                        {
                            key.Encoder = "gb2312";
                        }
                    }
                    //索引的值类型
                    Value value = new Value();
                    value.Type = ValType.Com;

                    if (se.WordLocation == true)
                    {
                        value.Length = 8;
                    }
                    else
                    {
                        value.Length = 4;
                    }
                    key.value = value;
                    key.ToString();
                    results.Add(key);
                    if (se.SubKey.Count > 0)
                    {
                        //添加子索引
                        foreach (SubSearchEnter subse in se.SubKey)
                        {

                            //索引的键字类型
                            Key subkey = new Key()
                            {
                                Name = subse.Name,
                                Length = subse.Length,
                                Encoder = getKeyType(se.WordSplit)
                            };
                            //索引的值类型
                            Value subvalue = new Value();
                            subvalue.Length = 4;
                            subvalue.Type = ValType.Com;
                            subkey.value = subvalue;

                            results.Add(subkey);
                        }
                    }

                }
                else
                {
                    if (se.WordSplit == WordSplitType.Cn)
                    {
                        //中文1-3字词索引
                        for (int i = 1; i <= 3; i++)
                        {
                            //索引的键字类型
                            Key wordkey = new Key()
                            {
                                Name = se.Name + i.ToString(),
                                Length = i * 2,
                                Encoder = getKeyType(se.WordSplit)
                            };

                            //索引的值类型
                            Value wordvalue = new Value();
                            if (se.WordLocation == true)
                            {
                                wordvalue.Length = 8;
                            }
                            else
                            {
                                wordvalue.Length = 4;
                            }

                            wordvalue.Type = ValType.Com;
                            wordkey.value = wordvalue;
                            results.Add(wordkey);
                        }

                    }
                    else
                    {
                        //英文 的数字索引
                        Key key = new Key()
                        {
                            Name = se.Name + "_0",
                            Length = 16,
                            Encoder = "utf-8"
                        };
                        //索引的值类型
                        Value value = new Value();
                        value.Length = 8;
                        value.Type = ValType.EnglishWord;
                        key.value = value;
                        results.Add(key);
                        //A-Z 索引
                        for (int i = 1; i <= 26; i++)
                        {
                            //索引的键字类型
                            Key wordkey = new Key()
                            {
                                Name = se.Name + "_" + (char)(i + 64),
                                Length = 16,
                                Encoder = "utf-8"
                            };
                            //索引的值类型
                            Value wordvalue = new Value();
                            wordvalue.Length = 8;
                            wordvalue.Type = ValType.EnglishWord;
                            wordkey.value = wordvalue;
                            results.Add(wordkey);
                        }

                    }
                }

            }
            return results;
        }