<!-- 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>
我有三个关于内部QA环境的Solr实例和两个关于生产的实例。所有这些几乎都是配置相同的。问题是,即使在搜索框字段中没有输入任何内容,Solr也会返回搜索结果? [网站上的搜索按钮]
任何人都可以请求帮助我在Solr级别做什么来阻止这种情况发生。我希望能够显示一条消息,说明&#34;您搜索输入0结果&#34;如果有人试图用空查询点击搜索按钮。感谢。
答案 0 :(得分:2)
它不是在空查询上返回文档的Solr。我非常确定你会向Solr发送一些查询,例如&#34; templateid:someId&#34;甚至更多。
您需要做的是检查您的前端是否用户在框中输入任何内容(或在后端但在调用Solr之前调用)并向用户显示正确的消息。
但是,如果您没有看到用于填充搜索结果列表的代码,那么任何人都无法为您提供所需的确切代码。
编辑
您的HTML包含onclick="ExecuteSearch(); return false;"
。
更改ExecuteSearch
功能并添加检查query-box
输入值是否为空。如果它是空的,请不要向Solr发送请求。
答案 1 :(得分:2)
如果您的业务规则是在未输入任何内容时显示0结果,则应在视图或服务器层中处理此行为, 之前服务器命中Solr,并且不要点击它一点都不。