public void SplitEnter(SphinxMatch match, int i) { string s = Convert.ToString(match); //textBox1.Text = s; char r = ':'; char r1 = ' '; string[] f = s.Split(r); string[] h = f[1].Split(r1); int id = Convert.ToInt32(h[1]); NamePeople(id); _ArrPeopleId[i] = id; }
/// <summary> /// 执行查询 /// </summary> /// <returns></returns> public IList<SphinxResult> RunQueries() { var reqsCount = this._reqs.Count(); var reqsLength = this._reqs.Sum(r => r.Length); var req = new SphReq(); req.Write(1); req.Write((short)SearchCommand.SEARCHD_COMMAND_SEARCH); req.Write((short)Command.VER_COMMAND_SEARCH); req.Write((int)(4 + reqsLength)); req.Write(reqsCount); foreach (var r in this._reqs) req.Mosaic(r.CutOffHead()); var conn = this.GetConnection(); conn.Send(req.GetBuffer()); var receive = new byte[1024 * 512]; var receLen = conn.Receive(receive); conn.Dispose(); var rep = new SphRep(receive, receLen); var len = this.CheckResponse(rep); var sphinxResultList = new List<SphinxResult>(); for (int rc = 0; rc < reqsCount; rc++) { var sphinxResult = new SphinxResult() { AttrName = new List<string>(), AttrTypes = new List<int>(), Fields = new List<string>(), Matches = new List<SphinxMatch>(), Words = new List<SphinxWordInfo>(), Status = rep.ReadInt() }; if (sphinxResult.Status != (int)SearchStatus.SEARCHD_OK) { if (sphinxResult.Status == (int)SearchStatus.SEARCHD_WARNING) { sphinxResult.WarnStr = Encoding.UTF8.GetString(rep.Read(len - 4)); } else { sphinxResult.ErrStr = Encoding.UTF8.GetString(rep.Read(len - 4)); return null; } } var fieldsNum = rep.ReadInt(); for (int i = 0; i < fieldsNum; i++) sphinxResult.Fields.Add(rep.ReadStringNode()); var attrNum = rep.ReadInt(); for (int i = 0; i < attrNum; i++) { sphinxResult.AttrName.Add(rep.ReadStringNode()); sphinxResult.AttrTypes.Add(rep.ReadInt()); } var matchNum = rep.ReadInt(); var id64 = rep.ReadInt(); long doc; for (int i = 0; i < matchNum; i++) { doc = 0 == id64 ? rep.ReadInt() : rep.ReadLong(); var docInfo = new SphinxMatch() { DocID = doc, Weight = rep.ReadInt(), AttrValues = new List<object>() }; foreach (var type in sphinxResult.AttrTypes) { switch ((AttributeType)System.Enum.Parse(typeof(AttributeType), type.ToString())) { case AttributeType.SPH_ATTR_BIGINT: docInfo.AttrValues.Add(rep.ReadLong()); rep.Read(8); break; case AttributeType.SPH_ATTR_FLOAT: docInfo.AttrValues.Add(rep.ReadSingle()); rep.Read(8); break; case AttributeType.SPH_ATTR_MULTI: var itemsNum = rep.ReadLong(); var vars = new List<long>(); for (int j = 0; j < itemsNum; j++) vars.Add(rep.ReadLong()); docInfo.AttrValues.Add(vars); break; default: rep.Read(8); docInfo.AttrValues.Add(rep.ReadLong()); break; } } sphinxResult.Matches.Add(docInfo); } sphinxResult.Total = rep.ReadInt(); sphinxResult.TotalFound = rep.ReadInt(); sphinxResult.Time = rep.ReadInt(); var wordNum = rep.ReadInt(); for (int i = 0; i < wordNum; i++) sphinxResult.Words.Add(new SphinxWordInfo() { Word = rep.ReadStringNode(), Docs = rep.ReadInt(), Hits = rep.ReadInt() }); sphinxResultList.Add(sphinxResult); } return sphinxResultList; }