Множественный поисковый запрос в umbraco Проверить поиск

Я пытаюсь настроить поиск в umbraco. У меня есть два поля поиска: материал и производитель. Когда я пытаюсь выполнить поиск по одному материалу и одному производителю, это даст правильный результат. Но когда я пытаюсь найти более одного материала или производителя это не дает результата. вот мой код

 const string materialSearchFields = "material";
    const string manufacturerSearchFields = "manufacturer";

if (!string.IsNullOrEmpty(Request.QueryString["материал"])) { material = Helper.StripTags(Request.QueryString["материал"]); } if (!string.IsNullOrEmpty(Request.QueryString["производитель"])) { изготовитель = Helper.StripTags(Request.QueryString["производитель"]); } if (!string.IsNullOrEmpty(Request.QueryString["материал"]) || !string.IsNullOrEmpty(Request.QueryString["производитель"])) { var query = userFieldSearchCriteria.Field(materialSearchFields, material).And() .Field(производительSearchFields, производитель).Compile(); contentResults = contentSearcher.Search(запрос).ToList(); }

здесь мои ключевые слова поиска в строке запроса: материал = железо, сталь

как мы можем разделить это ключевое слово и выполнить поиск? Заранее спасибо за помощь....


person Arun    schedule 09.12.2013    source источник


Ответы (1)


Вы используете оператор AND, в вашем случае, я думаю, вместо этого вы ищете GROUPEDOR?

Я просто работал в старом проекте и взял оттуда этот фрагмент (который я адаптировал для ваших нужд). Думаю вам поможет:

public IEnumerable<DynamicNode> SearchUmbraco(string[] keywords, string currentCulture)
        {
            // In this case I had some  diferent cultures, so this sets the BaseSearchProvider to the given culture parameter. You might not need this, use your default one.
            BaseSearchProvider searcher = SetBaseSearchProvider(currentCulture);

            var searchCriteria = searcher.CreateSearchCriteria(BooleanOperation.Or);
            var groupedQuery = searchCriteria.GroupedOr(new[] {"manufacturer", "material"}, keywords).Compile();

            var searchResults = searcher.Search(groupedQuery);

            // ... return IEnumerable of dynamic nodes (in this snipet case)

        }

Я просто разделяю (и т. д.) ключевые слова в помощнике и передаю их в массив строк при вызове этого метода.

Просто проверьте эту информацию в блоге umbraco: http://umbraco.com/follow-us/blog-archive/2011/9/16/examining-examine.aspx

person antao    schedule 09.12.2013