网站搜索无法使用Umbraco(ezsearch插件)

时间:2014-09-04 15:59:57

标签: asp.net-mvc search umbraco7

我已经在umbraco中安装了用于网站搜索的ezsearch并将其呈现如下。

   @Umbraco.RenderMacro("ezSearch", new {rootContentNodeId="-1", rootMediaNodeId="-1", indexType="CONTENT", searchFields= "bodyText", previewFields="null", previewLength="null", pageSize="null", hideFromSearchField="null", searchFormLocation="null"})

它不是搜索,总是给出显示结果。 可能是我在使用searchfields和prewiewfields做错了。 任何有这个想法的人请帮助我,我应该通过theough searchField和预览字段感谢你。

3 个答案:

答案 0 :(得分:2)

我有完全相同的问题。

在日志中挖掘后,我发现ezsearch引导程序代码(在app_code中)在索引时导致错误,因为项目“contents”已经全部添加到索引中。

通过在EzSearchBootstrapper.cs中注释掉这些行,我的索引再次开始填充。

var combinedFields = new StringBuilder();
        foreach (var keyValuePair in e.Fields)
        {
            combinedFields.AppendLine(keyValuePair.Value);
        }
        e.Fields.Add("contents", combinedFields.ToString());

答案 1 :(得分:1)

我正在运行Umbraco 7.2.4并且ezsearch在此之前的所有版本上都运行良好,但突然间在这个版本上出现了问题。我正在尝试一切,最后通过评论下面显示的一些查询构建代码让它工作,然后它开始工作。

显然这有问题......您可以尝试取消注释某些行以找到它确切的位置,但我想我现在就发布这个。

这是在ezsearch宏部分视图fyi。

@* 
var contentPathFilter = model.RootContentNodeId > 0
            ? string.Format("__IndexType:{0} +searchPath:{1} -template:0", UmbracoExamine.IndexTypes.Content, model.RootContentNodeId)
            : string.Format("__IndexType:{0} -template:0", UmbracoExamine.IndexTypes.Content);
    var mediaPathFilter = model.RootMediaNodeId > 0
        ? string.Format("__IndexType:{0} +searchPath:{1}", UmbracoExamine.IndexTypes.Media, model.RootMediaNodeId)
        : string.Format("__IndexType:{0}", UmbracoExamine.IndexTypes.Media);

    switch (model.IndexType)
    {
        case UmbracoExamine.IndexTypes.Content:
            query.AppendFormat("+({0}) ", contentPathFilter);
            break;
        case UmbracoExamine.IndexTypes.Media:
            query.AppendFormat("+({0}) ", mediaPathFilter);
            break;
        default:
            query.AppendFormat("+(({0}) ({1})) ", contentPathFilter, mediaPathFilter);
            break;
    }
    *@

.....

@*  // Rank content based on positon of search terms in fields
    for (var i = 0; i < model.SearchFields.Count; i++)
    {
        foreach (var term in model.SearchTerms)
        {
            query.AppendFormat("{0}:{1}*^{2} ", model.SearchFields[i], term, model.SearchFields.Count - i);
        }
    }*@

答案 2 :(得分:0)

您是否看过documentation of EzSearch并尝试使用RTE中的宏而不是直接在Razor中使用它。在文档(PDF)中有一个称为配置的部分,您可以在此找到有关可以在EzSearch中完成的配置的一些信息。

为什么你把所有的参数都给出为null,它说可以做到这一点。我建议你看看文档,然后首先尝试使用

PreviewLength:

  • 类型
    • INT
  • 可能的值
    • 正整数
  • 描述

    • 设置预览文本的最大长度 级联。连接的预览文本将是 在最后一个完整的单词上裁剪并加上后缀 省略。 PreviewLength的默认值为250.

    @ Umbraco.RenderMacro( “ezSearch”)

没有任何参数。然后从那里逐个添加参数,看看它何时停止显示任何内容。

您是在Visual Studio中工作还是只在Umbraco后端工作,当您使用visual studio时,调试应用程序是一件好事,看它是否会抛出任何异常。这将被umbraco捕获并吞下。如果不使用Visual Studio,请查看Umbraco的日志记录,看看是否记录了某种错误。