高级搜索插件solis search在umbraco中的使用
2014-12-14 12:48
148 查看
好久没有写关于umbraco的博客了,这段时间在研究solis search,感觉它太强大,好东西是需要分享的,所以写一篇简单的使用博客分享给个人umbraco爱好者。
solis search就是基于apache solr开发的一个umbraco的插件。它在做了简单的配置之后,就可以检索到umbraco content里面的几乎所有的文字内容,包括上传的文档或者选择的media picker中的文档(word, pdf, excel 等等)。
下载地址:http://www.java.com/zh_CN/,
下载后安装,安装之后请配置环境变量,是java命令可以直接在命令行根目录运行。如何配置环境变量在这就不介绍了。
请参考官方文档进行安装:http://lucene.apache.org/solr/4_5_1/tutorial.html,
操作简要说明:
解压压缩包到电脑的任意位置,建议目录全是英文的
打开cmd,进入到目录:solr-4.5.1\example
View Code
做了如上操作后,就可以开始使用solis search进行操作了。
有错误的地方,欢迎指出。
参考:
https://www.solissearch.com/
http://baike.baidu.com/view/5649738.htm?fr=aladdin
http://baike.baidu.com/view/371811.htm
尊重原创,转载请说明出处!
简介
在了解solis search之前,我们需要简单的了解apache solr, Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。更详细的介绍请充分利用搜索引擎,这里就不做详细介绍了。solis search就是基于apache solr开发的一个umbraco的插件。它在做了简单的配置之后,就可以检索到umbraco content里面的几乎所有的文字内容,包括上传的文档或者选择的media picker中的文档(word, pdf, excel 等等)。
下载安装
1. 安装JAVA环境
安装java环境是为了运行apache solr server.下载地址:http://www.java.com/zh_CN/,
下载后安装,安装之后请配置环境变量,是java命令可以直接在命令行根目录运行。如何配置环境变量在这就不介绍了。
2. 安装apache solr
下载地址:http://lucene.apache.org/solr/,这里记住,一定要下载4.5.1版本的,不然使用会出现未知的错误。因为solis search是基于version 4.5开发的。请参考官方文档进行安装:http://lucene.apache.org/solr/4_5_1/tutorial.html,
操作简要说明:
解压压缩包到电脑的任意位置,建议目录全是英文的
打开cmd,进入到目录:solr-4.5.1\example
@using System.Activities.Statements @using System.Globalization @using SolisSearch.Helpers @using SolisSearch.Repositories @inherits Umbraco.Web.Macros.PartialViewMacroPage @{ Layout = "../Master.cshtml"; } <h1>@ViewBag.Title</h1> <h3>@ViewData["content"]</h3> @{ var query = HttpUtility.UrlDecode(Request.QueryString["q"]); var fq = new List<string>(); <script type="text/javascript"> $(document).ready(function () { $("#txtSearch").keydown(function (e) { if (e.which == "13") { $("#searchform").submit(); } }); $(".facetlink").click(function () { var filter = $(this).attr("data-filter"); $("#filters").append("<input name='fq' type='hidden' value='" + filter + "¤' >"); $("#searchform").submit(); }); $("#filters").on("click", "a", function () { $(this).prev("input").remove(); $("#searchform").submit(); }); }); </script> <div class="searchform"> <form id="searchform" method="GET"> <input id="txtSearch" autocomplete="off" type="search" name="q" value="@query" /> <button type="submit">Search</button> @if (!String.IsNullOrEmpty(Request["fq"])) { fq.AddRange(Request["fq"].TrimEnd(Convert.ToChar("¤")).Split(new[] { "¤," }, StringSplitOptions.RemoveEmptyEntries)); } <div id="filters"> @{ if (fq.Any()) { <h6>Active filters <span>(Click to remove)</span></h6> foreach (var field in fq) { <input name="fq" type="hidden" value="@string.Format("{0}¤", field)" /> <a href="#">@Html.Raw(GetFriendlyCategoryName(RangeFormatHelper.FormatRange(field))) <i class="fa fa-times"></i></a> } } } </div> </form> </div> if (!String.IsNullOrEmpty(query) || fq.Any()) { var languageName = CultureInfo.CurrentCulture.TwoLetterISOLanguageName; var searchRepo = new SearchRepository(); var searchResultItems = searchRepo.SearchIndex(query, fq.ToArray(), 1, 0, null); if (searchResultItems.SpellChecking.Any()) { <div class="spellchecking"> <h4>Did you mean</h4> @foreach (var spellitem in searchResultItems.SpellChecking) { foreach (var suggestion in spellitem.Suggestions) { <p><a href="?q=@suggestion">@suggestion</a></p> } } </div> } <div class="facets"> <div> @if (searchResultItems.FacetFields.Any()) { var doctypesFacets = searchResultItems.FacetFields["doctypes"]; <h4>Category</h4> <ul> @{ foreach (var keyValuePair in doctypesFacets) { var friendlyname = GetFriendlyCategoryName(keyValuePair.Key); if (String.IsNullOrEmpty(friendlyname)) { continue; } <li> <a class="facetlink" data-filter="@Html.Raw(string.Format("{0}:{1}", "doctypes", keyValuePair.Key))" href="javascript:void(0);"> @Html.Raw(friendlyname + " (" + keyValuePair.Value + ")") </a> </li> } } </ul> } </div> <div> @if (searchResultItems.FacetQueries.Any()) { <h4>Date modified</h4> <ul> @foreach (var facetqueries in searchResultItems.FacetQueries) { <li> <a class="facetlink" data-filter="@facetqueries.Key" data-value="@facetqueries.Key" href="javascript:void(0);"> @Html.Raw(RangeFormatHelper.FormatRange(facetqueries.Key) + " (" + facetqueries.Value + ")") </a> </li> } </ul> } </div> </div> if (searchResultItems.Any()) { <div class="searchResults"> <p>@string.Format("Total of {0} items found", searchResultItems.NumFound)</p> <ol> @foreach (var searchitem in searchResultItems) { <li> <h4><a href="@Html.Raw(searchitem.LinkUrl ?? searchitem.ResourceName)">@Html.Raw(searchitem.Name ?? searchitem.DocumentTitle.FirstOrDefault() ?? Path.GetFileNameWithoutExtension(searchitem.ResourceName))</a></h4> @{ var highlightedSnippets = searchResultItems.Highlights[searchitem.Id]; if (highlightedSnippets != null && highlightedSnippets.Any()) { foreach (var highlightItem in highlightedSnippets) { @Html.Raw(string.Join(" ", highlightItem.Value)) } } else { var contentString = string.Join(" ", searchitem.Content); @Html.Raw(contentString.Substring(0, Math.Min(contentString.Length, 175))) } } </li> } </ol> </div> } else { <p style="clear: both;">No search results</p> } } } @functions { private string GetFriendlyCategoryName(string doctype) { if (doctype.Contains("/")) return doctype; switch (doctype) { case "newsItem": return "News Item"; case "umbHomePage": return "Article"; default: return "Others"; } } }
View Code
做了如上操作后,就可以开始使用solis search进行操作了。
有错误的地方,欢迎指出。
参考:
https://www.solissearch.com/
http://baike.baidu.com/view/5649738.htm?fr=aladdin
http://baike.baidu.com/view/371811.htm
尊重原创,转载请说明出处!
相关文章推荐
- Goto 桌面搜索 插件的使用
- 在Win7系统中如何使用Foxit PDF IFilter插件快速搜索海量PDF
- 高级搜索的使用advancedsearch.htm
- 使用网页爬虫(高级搜索功能)搜集含关键词新浪微博数据
- 如何使用GOOGLE高级搜索技巧
- 学习使用百度谷歌等高级搜索功能
- 使用github高级搜索
- 如何使用GOOGLE高级搜索技巧
- 天下会 - Google系列之谷歌搜索引擎高级用法:使用搜索语法精确搜索
- unity3d插件Daikon Forge GUI 中文教程-6-高级控件richtextlabel的使用
- 35 个高级但使用简单的 jQuery 插件
- 智能搜索jquery-autocomplete 自动填充插件使用方法及参数使用说明
- 35 个非常高级且易于使用 jQuery 插件
- 如何使用GOOGLE高级搜索技巧
- 如何使用GOOGLE高级搜索技巧
- 在Umbraco中使用XSLTsearch包实现搜索功能
- JQuery插件第三十三个:高级搜索下的排序功能
- Google搜索命令“site:”运算符高级使用技巧:
- 如何使用GOOGLE高级搜索技巧
- unity3d插件Daikon Forge GUI 中文教程-7-高级控件slider的使用