private string BuildSearchString(ILeafItem qi) { // This handles multiple column / single value search efficiently. // It also handles single column / single value if (!string.IsNullOrEmpty(qi.Fieldname)) { string[] fieldNames = qi.Fieldname.Split(','); StringBuilder requestBuffer = new StringBuilder(); int nameIndex = 0; foreach (string fldName in fieldNames) // Handled full text vectors here { if (nameIndex++ > 0) { requestBuffer.Append(" or "); } requestBuffer.Append(BuildFieldRequest(fldName.Trim(), qi.QueryValue, qi.CompareType)); } return(requestBuffer.ToString()); } else { return(BuildFieldRequest(string.Empty, qi.QueryValue, qi.CompareType)); } }
private string TraverseTree(IQueryItem item) { if (item is IConnectorItem) { IConnectorItem conn = item as IConnectorItem; StringBuilder buffer = new StringBuilder(); string leftRequest = TraverseTree(_queryNodes[conn.LeftChild]); string rightRequest = TraverseTree(_queryNodes[conn.RightChild]); buffer.AppendFormat("({0} {1} {2})", leftRequest, conn.FilterType.ToString(), rightRequest); return(buffer.ToString()); } else { ILeafItem leaf = item as ILeafItem; return(BuildSearchString(leaf)); } }
private void OnSearch(object sender, System.EventArgs e) { string resultTable = null; StartWatchIt("Search, " + _targetTbl); { //try { SearchFactory sf = new SearchFactory(); if (_search == null) { sf.GetSearchProvider(out _search); } _search.SetOption("connectionString", _connString); _search.SetOption("skipLoadResult", _checkBoxSkipLoad.Checked ? "true" : "false"); _search.SetOption("IndexPath", _textBoxSearchIndexPath.Text); if (_numericUpDownMaxResult.Value > 0) { _search.SetOption("MaxResultCount", _numericUpDownMaxResult.Value.ToString()); } ILeafItem qi = null; sf.GetLeafItem(out qi); qi.TableName = _textBoxSearchTableName.Text; qi.Fieldname = _textBoxTargetField.Text; qi.QueryValue = _comboBoxSearchValue.Text; qi.CompareType = (CompareType)Enum.Parse(typeof(CompareType), _comboBoxCompareType.SelectedItem.ToString()); resultTable = _search.AddQueryItem(qi); _search.RunSearch(); } //catch (Exception ex) //{ // MessageBox.Show(ex.Message); //} } StopWatchIt("Search, " + _targetTbl); _textBoxOnFoundDoc.Text = _search.GetQueryResult(resultTable).HitCount.ToString(); _search.Reset(); }
public void GetLeafItem(out ILeafItem item) { item = new LeafItem(); item.NodeId = _itemCounter++; }