代码之家  ›  专栏  ›  技术社区  ›  Jabberwocky

使用搜索表单搜索HTML DOM树

  •  0
  • Jabberwocky  · 技术社区  · 8 年前

    我有一个像字典一样的页面。我用Umbraco生成页面中的单词,每个单词都有一个描述。这是营养词,所以就像“盐”、“维生素B12”等。现在,我必须创建一个搜索栏,搜索这些词并返回结果,我需要它是模糊的。我不需要使用Umbraco,但我目前正在使用MVC和razor进行项目。我不知道如何让它搜索页面。

    <div class="row">
    
                @foreach (var item in Model.Content.Descendants("lekseisDiatrofikouLeksikou"))
                {
    
    
    
    
    
                    <div class="col-sm-3 styled">
                        <button data-id="@id" type="button" class="btn">
                            @(item.GetPropertyValue<string>("leksi"))
                        </button>
                        <div id="@("button-wrapper"+id)" class="col-xs-12 styled2 text-center nopadding">
                            @Html.Raw(item.GetPropertyValue<string>("perigrafiLeksis"))
                        </div>
                    </div>
                    id++;
                }
    
            </div>
    

    这是我用来在字典中生成单词的循环。这会为每个单词生成一个引导col-sm-3。我真的不知道如何搜索这些单词。我应该在HTML中搜索DOM树吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Marcin Zajkowski    8 年前

    不当然:)在Umbraco中,您可以使用Examine/Lucene索引来实现快速方便的搜索功能。这是为了使搜索更容易。您仍然可以在页面子体中执行此操作,但在这种情况下,检查会更好。

    请查看此处的介绍和详细信息: https://our.umbraco.org/documentation/reference/searching/examine/ https://our.umbraco.org/documentation/reference/searching/examine/overview-explanation 检查如何使用Fluent API并构造查询,使用该查询,您将只能搜索感兴趣的节点内部。

    可能如下所示:

    var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
    var searchCriteria = ExamineManager.Instance.CreateSearchCriteria();
    
    var valuesToSearch = new string[] { "salt", "vitamin" };
    
    searchCriteria.NodeTypeAlias("AliasOfYourDictionaryItemDocumentType");
    searchCriteria.GroupedOr(new List<string>() { "propertyAliasInWhichWeWantToSearch" }, valuesToSearch);
    
    var results = umbracoHelper.TypedSearch(searchCriteria);
    

    您将看到索引搜索返回的项目列表。这是未经测试的,但希望能为您找到正确的方向。快乐编码!