2017-10-09 43 views
1
<!-- Search --> 
<div class="searchresults"> 
    <div> 
     <div class="searchresultsinput"> 
      @Html.TextBox("query-box", Model.Search.FreeSearch) 
      <input type="image" id="search-btn" class="search-btn" onclick="ExecuteSearch(); return false;" src='@Html.IncludeCDNImagePathWithTimeStamp("Buttons/search-now.png")' /> 
     </div> 
     <div class="searchresultscounts"> 
      @{ 
       if (Model.TotalCount > 0) 
       { 
        if (Model.Search.LastItemIndex > Model.TotalCount) 
        { 
         <div>Showing @(Model.Search.FirstItemIndex + 1) - @Model.TotalCount of @Model.TotalCount documents.</div> 
        } 
        else 
        { 
         <div>Showing @(Model.Search.FirstItemIndex + 1) - @Model.Search.LastItemIndex of @Model.TotalCount documents.</div> 
        } 
       } 
       else 
       { 
        if (!string.IsNullOrEmpty(Model.DidYouMean)) 
        { 
         <span>Did you mean </span><strong><em><a href="<%= Url.ForQuery(Model.DidYouMean) %>"><%= Model.DidYouMean%></a></em></strong> 
        } 
        else 
        { 
         <div>No results found. Please try a different search term.</div> 
        } 
       } 
      } 

     </div> 

我有三个关于内部质量保证环境的Solr实例,两个关于生产。他们几乎都是配置明智相同的。问题是即使在搜索框字段中没有输入任何内容,Solr也会返回搜索结果吗? [网站上的搜索按钮]Solr返回空查询文档 - 如何停止?

任何人都可以请帮助我需要在Solr级别做什么来阻止这种情况的发生。如果有人试图用空查询命中搜索按钮,我希望能够显示一条消息,指出“您搜索输入0个结果”。谢谢。

回答

2

这不是Solr返回空查询文档。我很肯定你会发送一些查询到Solr,比如“templateid:someId”,甚至更多。

你需要做的是检查你的前端,如果用户在框中(或在后端,但在调用Solr之前,甚至调用)键入任何内容并向用户显示正确的消息。

但是,如果没有看到您用来填充搜索结果列表的代码,则没有人能够为您提供您需要的确切代码。


编辑

你的HTML包含onclick="ExecuteSearch(); return false;"

更改您的ExecuteSearch函数并添加一个检查,如果query-box输入值不为空。如果它是空的,请勿将请求发送到Solr。

+0

实际上,SOLR通常会将所有内容发送给客户端(在其默认文档限制为100的范围内) - 只有当您添加过滤器和查询时,结果才会缩小。 –

+0

是的,但OP写道“即使在搜索框字段中没有输入任何内容”。 Solr与搜索框无关。是该页面上搜索功能的前端/后端逻辑。 –

+0

编辑你的问题,而不是添加评论 –

2

如果您的业务规则是在没有输入任何内容时显示0结果,则应该在视图或服务器层中处理此行为,然后服务器点击Solr,并且根本不打中。