ExamineIndexes Search Page
b
I want to create a search engine using examine, but I am having problems creating searchcontroller.cs, can you help me?
Copy code
namespace YOURNAMSPACE.Controllers
{
    using Examine;
    using Umbraco.Cms.Core.Web;

    public class SearchController : Controller
    {
        private readonly IUmbracoContextFactory _umbracoContextFactory;
        private readonly IExamineManager _examineManager;

        public SearchController(IUmbracoContextFactory umbracoContextFactory, IExamineManager examineManager)
        {
            _umbracoContextFactory = umbracoContextFactory;
            _examineManager = examineManager;
        }

        [HttpPost]
        [Route("umbraco/surface/Search/Search")]
        public IActionResult Search([FromForm] string query)
        {
            var searchResults = PerformSearch(query);
            return new JsonResult(new {
                query = query,
                count = searchResults.Count(),
                results = searchResults.Select(result => new {
                    primary = result.Name,
                    secondary = result.Url
                })
            });
        }

        private IEnumerable<IPublishedContent> PerformSearch(string query)
        {
            using (var umbracoContextReference = _umbracoContextFactory.EnsureUmbracoContext())
            {
                var examineManager = umbracoContextReference.UmbracoContext.ScopeProvider.Resolve<IExamineManager>();
                var searchProvider = examineManager.TryGetIndex(Constants.UmbracoIndexes.ExternalIndexName);
                var searcher = searchProvider.GetSearcher();

                var results = searcher.Search(query);

                return results.Select(result =>
                {
                    var umbracoHelper = umbracoContextReference.UmbracoContext.UmbracoHelper;
                    return umbracoHelper.Content.GetById(int.Parse(result.Id));
                }).Where(result => result != null);
            }
        }
    }
}
Copy code
$(document).ready(function() {
    $('#searchInput').on('input', function() {
        var query = $(this).val();

        if (query.length >= 3) { // Minimum 3 karakterle arama başlasın
            $.ajax({
                type: "POST",
                url: "/umbraco/surface/controllers/Search",
                data: { query: query },
                success: function(response) {
                    $('#searchTerm').text('“' + response.query + '”');
                    $('#searchResultCount').text(response.count);

                    if (response.count > 0) {
                        var resultsHtml = '';
                        $.each(response.results, function(index, result) {
                            resultsHtml += '<div class="search-result-item">';
                            resultsHtml += '<span class="item-primary">' + result.primary + '</span>';
                            resultsHtml += '<span class="item-secondary">' + result.secondary + '</span>';
                            resultsHtml += '</div>';
                        });

                        $('#searchResultsList').html(resultsHtml);
                        $('#searchResults').removeClass('d-none');
                        $('#searchNotFound').addClass('d-none');
                    } else {
                        $('#searchResults').addClass('d-none');
                        $('#searchNotFound').removeClass('d-none');
                    }

                    $('#searchInfoArea').removeClass('d-none');
                }
            });
        } else {
            $('#searchInfoArea').addClass('d-none');
            $('#searchResults').addClass('d-none');
            $('#searchNotFound').addClass('d-none');
        }
    });
});
`
Copy code
0>SearchController.cs(40,21): Error CS0828 : Cannot assign 'method group' to anonymous type property
0>SearchController.cs(49,77): Error CS1061 : 'IUmbracoContext' does not contain a definition for 'ScopeProvider' and no accessible extension method 'ScopeProvider' accepting a first argument of type 'IUmbracoContext' could be found (are you missing a using directive or an assembly reference?)
0>SearchController.cs(57,80): Error CS1061 : 'IUmbracoContext' does not contain a definition for 'UmbracoHelper' and no accessible extension method 'UmbracoHelper' accepting a first argument of type 'IUmbracoContext' could be found (are you missing a using directive or an assembly reference?)
0>SearchController.cs(58,68): Error CS1503 : Argument 1: cannot convert from 'method group' to 'System.ReadOnlySpan<byte>'
Could you help me please?
2 Views