Ejemplo n.º 1
0
        private static void ManageObjectSearchItemsDescription(IEnumerable <ObjectSearchListItem> data, string filter)
        {
            if (string.IsNullOrWhiteSpace(filter))
            {
                return;
            }

            foreach (var item in data)
            {
                var obj           = ObjectRepository.GetObjectPropertiesById(item.Id);
                var defaultValues = obj.DefaultValues?.ToList();
                if (defaultValues != null && defaultValues.Any())
                {
                    var names = defaultValues.Where(x => x.VariableName.Contains(filter)).ToList();
                    var dName = names.Any() ? names.First() : null;
                    if (dName != null)
                    {
                        item.Description = FoundTextMarker.GetSimpleRelevantMarkedText(WebUtility.HtmlEncode(dName.VariableName), filter, 20, "<span class='seachResultHighlight'>", "</span>");
                        continue;
                    }

                    var filteredDefaultValues = defaultValues.Where(x => x.VariableValue.Contains(filter)).ToList();
                    var dVal = filteredDefaultValues.Any() ? filteredDefaultValues.First() : null;
                    if (dVal != null)
                    {
                        item.Description = FoundTextMarker.GetSimpleRelevantMarkedText(WebUtility.HtmlEncode(dVal.VariableValue), filter, 20, "<span class='seachResultHighlight'>", "</span>");
                        continue;
                    }
                }

                if (obj.Container != null)
                {
                    if (!string.IsNullOrWhiteSpace(obj.Container.FilterValue) && obj.Container.FilterValue.Contains(filter))
                    {
                        item.Description = FoundTextMarker.GetSimpleRelevantMarkedText(WebUtility.HtmlEncode(obj.Container.FilterValue), filter, 20, "<span class='seachResultHighlight'>", "</span>");
                        continue;
                    }

                    if (!string.IsNullOrWhiteSpace(obj.Container.OrderDynamic) && obj.Container.OrderDynamic.Contains(filter))
                    {
                        item.Description = FoundTextMarker.GetSimpleRelevantMarkedText(WebUtility.HtmlEncode(obj.Container.OrderDynamic), filter, 20, "<span class='seachResultHighlight'>", "</span>");
                        continue;
                    }

                    if (obj.Container.SelectStart == filter)
                    {
                        item.Description = "<span class='seachResultHighlight'>" + obj.Container.SelectStart + "</span>";
                        continue;
                    }

                    if (obj.Container.SelectTotal == filter)
                    {
                        item.Description = "<span class='seachResultHighlight'>" + obj.Container.SelectTotal + "</span>";
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public IEnumerable <SearchInArticlesResultItem> SearchInArticles(int siteId, int userId, string searchString, ListCommand listCmd, out int totalRecords)
        {
            totalRecords = 0;
            string sqlSearchString;

            if (QPContext.DatabaseType == DatabaseType.SqlServer)
            {
                if (!grammaParser.TryParse(searchString, out sqlSearchString))
                {
                    return(Enumerable.Empty <SearchInArticlesResultItem>());
                }
            }
            else
            {
                sqlSearchString = searchString;
            }


            if (string.IsNullOrWhiteSpace(sqlSearchString))
            {
                return(Enumerable.Empty <SearchInArticlesResultItem>());
            }

            using (new QPConnectionScope())
            {
                var resultArticleId = int.TryParse(searchString, out var articleId) && articleId > 0 ? articleId : (int?)null;
                var result          = siaRepository.SearchInArticles(siteId, userId, sqlSearchString, resultArticleId, listCmd, out totalRecords).ToArray();
                if (result.Any())
                {
                    if (QPContext.DatabaseType == DatabaseType.SqlServer)
                    {
                        var wordForms = Enumerable.Empty <string>();
                        var version   = siaRepository.GetSqlServerVersion();
                        if (version.Major >= 10)
                        {
                            // если это 2008 или старше - то получить словоформы через запрос к sql server
                            wordForms = siaRepository.GetWordForms(sqlSearchString);
                        }
                        else
                        {
                            wordForms = FoundTextMarker.SplitIntoWords(searchString);
                        }

                        // Выделить релевантные участки
                        foreach (var r in result)
                        {
                            r.Text = FoundTextMarker.GetRelevantMarkedText(r.Text, wordForms, 20, "<span class='seachResultHighlight'>", "</span>");
                        }
                    }
                }
                return(result);
            }
        }
Ejemplo n.º 3
0
        public void FindWordFormPositionDictionaryTest()
        {
            IEnumerable <string> forms = new[]
            {
                "тарифы",
                "тарифу",
                "тарифом",
                "тарифов",
                "тарифе",
                "тарифах",
                "тарифами",
                "тарифам",
                "тарифа",
                "тариф",
                "интернету",
                "интернетом",
                "интернете",
                "интернета",
                "интернет"
            };

            var res = FoundTextMarker.GetRelevantMarkedText("ЭТОТ ТАРИФ НА ИНТЕРНЕТ ОЧЕНЬ ВЫГОДЕН", forms, 10, "<b>", "</b>");

            Assert.AreEqual("ЭТОТ <b>ТАРИФ</b> НА <b>ИНТЕРНЕТ</b>", res);

            res = FoundTextMarker.GetRelevantMarkedText("Есть много новых тарифов которые стоят не дорого.", forms, 10, "<b>", "</b>");
            Assert.AreEqual("много новых <b>тарифов</b> которые стоят", res);

            res = FoundTextMarker.GetRelevantMarkedText("Сейчас очень быстрый доступ в ИНТЕРНЕТ.", forms, 10, "<b>", "</b>");
            Assert.AreEqual("быстрый доступ в <b>ИНТЕРНЕТ</b>.", res);

            res = FoundTextMarker.GetRelevantMarkedText("Вообще левая строка", forms, 10, "<b>", "</b>");
            Assert.AreEqual("Вообще левая", res);

            res = FoundTextMarker.GetRelevantMarkedText("", forms, 10, "<b>", "</b>");
            Assert.AreEqual(string.Empty, res);

            res = FoundTextMarker.GetRelevantMarkedText(null, forms, 10, "<b>", "</b>");
            Assert.IsNull(res);

            res = FoundTextMarker.GetRelevantMarkedText("этот тариф на интернет очень выгоден", Enumerable.Empty <string>(), 10, "<b>", "</b>");
            Assert.AreEqual("этот тариф", res);
        }
Ejemplo n.º 4
0
        private static void ManageTemplateSearchItemsDescription(IEnumerable <PageTemplateSearchListItem> data, string filter)
        {
            if (string.IsNullOrWhiteSpace(filter))
            {
                return;
            }

            foreach (var item in data)
            {
                var template = PageTemplateRepository.GetPageTemplatePropertiesById(item.Id);
                if (!string.IsNullOrWhiteSpace(template.CodeBehind) && template.CodeBehind.Contains(filter))
                {
                    item.Description = FoundTextMarker.GetSimpleRelevantMarkedText(WebUtility.HtmlEncode(template.CodeBehind), filter, 20, "<span class='seachResultHighlight'>", "</span>");
                    continue;
                }

                if (!string.IsNullOrWhiteSpace(template.TemplateBody) && template.TemplateBody.Contains(filter))
                {
                    item.Description = FoundTextMarker.GetSimpleRelevantMarkedText(WebUtility.HtmlEncode(template.TemplateBody), filter, 20, "<span class='seachResultHighlight'>", "</span>");
                }
            }
        }
Ejemplo n.º 5
0
        private static void ManageFormatSearchItemsDescription(IEnumerable <ObjectFormatSearchResultListItem> data, string filter)
        {
            if (string.IsNullOrWhiteSpace(filter))
            {
                return;
            }

            foreach (var item in data)
            {
                var format = ObjectFormatRepository.ReadObjectFormat(item.Id, true);
                if (!string.IsNullOrWhiteSpace(format.CodeBehind) && format.CodeBehind.Contains(filter))
                {
                    item.Description = FoundTextMarker.GetSimpleRelevantMarkedText(WebUtility.HtmlEncode(format.CodeBehind), filter, 20, "<span class='seachResultHighlight'>", "</span>");
                    continue;
                }

                if (!string.IsNullOrWhiteSpace(format.FormatBody) && format.FormatBody.Contains(filter))
                {
                    item.Description = FoundTextMarker.GetSimpleRelevantMarkedText(WebUtility.HtmlEncode(format.FormatBody), filter, 20, "<span class='seachResultHighlight'>", "</span>");
                }
            }
        }