Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Kasper Dyrvig 246 posts 379 karma points
    Jan 21, 2020 @ 15:01
    Kasper Dyrvig
    0

    Site search in site with language variations

    Hi all,

    So, I successfully migrated my site from Umbraco 7 to 8. Initially I also managed to make my search feature work again.

    Then I implemented using language variations. Now the search does not work.

    My goal is to search the site (ideally in just the "support" section) and show the results. But only per language.

    The current code follows:

    @inherits Umbraco.Web.Macros.PartialViewMacroPage
    @using Umbraco.Examine
    @{
        var searchTerm = string.Empty;
        searchTerm = string.IsNullOrEmpty(Request["search"]) ? string.Empty : Request["search"];
    
        if (searchTerm != string.Empty)
        {
            if(ExamineManager.Instance.TryGetIndex("ExternalIndex", out var index))
            {
                var searcher = index.GetSearcher();
                var results = searcher.CreateQuery("content").NodeTypeAlias("SupportItem").And().Field("bodyText", searchTerm).Execute();
    
                if (results.Any())
                {
                    <h2 class="header-greenline">@Umbraco.GetDictionaryValue("Results for") "@searchTerm"</h2>
                    <ul>
                        @foreach (var result in results)
                        {
                            if (result.Id != null)
                            {
                                var node = Umbraco.Content(result.Id);
                                <li>
                                    <a href="@node.Url">@node.Value("bodyHeadline")</a>
                                </li>
                            }
                        }
                    </ul>
                }
                else
                {
                    <p>@Umbraco.GetDictionaryValue("No search results") @searchTerm</p>
                }
            }
            return;
        }
    }
    

    The above code consistenly returns zero results.

    I hope someone can help my in the right direction. Thank you!

  • Nik 1351 posts 5855 karma points MVP 3x c-trib
    Jan 21, 2020 @ 19:03
    Nik
    100

    Hi Kasper,

    I believe that once you turn on multi-language features the indexes change and append the culture code to the end of their field name (only on the multi-lingual fields) ... so if your bodyText is now multi lingual and is available for both English(UK) and Welsh(UK), I believe 2 fields now exists in the index:

    bodyText_enGB and bodyText_cyGB

    If you update your search query to take this into account it should start working I think.

    Thanks,

    Nik

  • Kasper Dyrvig 246 posts 379 karma points
    Jan 23, 2020 @ 13:11
    Kasper Dyrvig
    0

    Hi Nik,

    Thank you very much for directing me here.

    I checked the index via backoffice and indeed the results are sorted in languages per fields. bodyText is now bodyText_da-dk for Danish edition.

    I'll continue work on this to accomodate the different languages.

Please Sign in or register to post replies

Write your reply to:

Draft