Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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));
            }
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
 public void GetLeafItem(out ILeafItem item)
 {
     item        = new LeafItem();
     item.NodeId = _itemCounter++;
 }