最近我们搜易站内搜索系统的一个客户需要一个无限级分类和分类统计功能,要实现的效果如下:

但由于搜易站内搜索系统是基于Lucene.net 2.0开发的,并没有内置的分类统计搜索功能,于是乎只能自己实现了,考虑到客户的总数据量和搜索量不是特别大,于是用了简单有效的方式来实现:

因为涉及到分类的操作,但是每个站点的分类体系还是有些不一样的,本文主要提供思路和部分演示代码,给有需要的童鞋参考:

思路:

首先想到Lucene搜索出来的结果是一个Hits对象,Hits其实就是一个搜索结果文档的集合对象,那么遍历这个集合对象,跟给定的分类字段比对,存在就+1 。

代码示例:

Lucene.Net.Search.Hits hits = Searcher.Search(querystring) ;

int hcount = hits.Length();

Lucene.Net.Documents.Document doc = null;
for (int i = 0; i < hcount; i++)
{
    doc = hits.Doc(i);
    string c1 = doc.GetField("Cate1").StringValue();

//判断是否存在于给定的分类集合中,存在则加1

if (parameter.Cate1Groups.ContainsKey(c1))
    {
        parameter.Cate1Groups[c1] = parameter.Cate1Groups[c1] + 1;
    }
    else
    {
        parameter.Cate1Groups.Add(c1, 1);
    }
}

适用场景:

这种实现方式比较适合中小型网站,在数据量和搜索量不大的情况下可用。

题外话:

以前一直觉得,作为一个中小型网站,搜索的筛选不应该太多,毕竟海量数据的百度,谷歌都简单到只有一个搜索框,后来经过跟一些站长的交流后发现,其实并不是的这样的,有些网站,比如图片,素材,资源类网站,用户对这类网站的站内搜索的使用频率非常高的,对搜索质量,效率和精准筛选有比较高的要求,搜索的PV占比整站PV的比重是很高,如果搜索做的不好,对流量影响非常大,因为站内搜索好用的话,对PV的提升是双倍甚至几倍的,反之也是一样的。

转载于:https://www.cnblogs.com/kwklover/p/6494701.html

Lucene.Net如何实现搜索结果分类统计功能相关推荐

  1. 使用 Apache Lucene 搜索文本——轻松为应用程序构建搜索和索引功能

    简介: 本文将探讨 Apache Lucene -- 性能卓越.功能全面的文本搜索引擎库.我们将学习 Lucene 架构及其核心 API.学习如何使用 Lucene 进行跨平台全文本搜索.建立索引.显 ...

  2. Lucene5.5.4入门以及基于Lucene实现博客搜索功能

    前言 一直以来个人博客的搜索功能很蹩脚,只是自己简单用数据库的like %keyword%来实现的,所以导致经常搜不到想要找的内容,而且高亮显示.摘要截取等也不好实现,所以决定采用Lucene改写博客 ...

  3. 基于Lucene实现博客搜索功能

    前言: 最近毕设开会无意间听到小陈同学使用lucene整一个全文索引,出于好奇了解了一下发现其是结合相关分词器可以对一大段文字建立索引,然后可以实现搜索功能,本来博客一直差着一个搜索博客功能(不想通过 ...

  4. Katta:基于Lucene可伸缩分布式实时搜索方案

    http://www.ij2ee.com/2011/11/29/katta%EF%BC%9A%E5%9F%BA%E4%BA%8Elucene%E5%8F%AF%E4%BC%B8%E7%BC%A9%E5 ...

  5. 微信小程序的搜索和重置功能

    微信小程序的搜索和重置功能 wxml <template><div><div class="input-wrap"><el-inputse ...

  6. 站长工具|百度搜索框提示功能

    百度向站长开放免费"百度搜索框"代码和"百度搜索框提示"代码.只需进行简单的设置, 即可将" 百度搜索框( 带提示功能)"功能快速加入到您的 ...

  7. Lucene.net站内搜索—5、搜索引擎第一版实现

    目录 Lucene.net站内搜索-1.SEO优化 Lucene.net站内搜索-2.Lucene.Net简介和分词 Lucene.net站内搜索-3.最简单搜索引擎代码 Lucene.net站内搜索 ...

  8. elementui带输入建议查询_elementUi简单实现搜索提词功能

    上周又又又又加需求了,好吧,bring it on 先讲需求目标要实现功能 focus的时候要出历史搜索(要存缓存) 历史搜索下部出现清除缓存按钮 input的时候要根据后台返回出提词 element ...

  9. chosen jquery ajax搜索,基于chosen插件实现人员选择树搜索自动筛选功能

    要实现的功能截图: 要求: 1.点击输入框可以根据拼音自动筛选数据,并且标记已经选择的数据,没有结果的时候提示,相应的更新左边树状态 2.勾选树右侧树的复选框左侧出现相应的内容 我用到的插件 vue+ ...

最新文章

  1. J2EE的13个规范总结
  2. Algorand协议详解
  3. 【MySQL】日期函数:仿trunc、当年、当月、当天
  4. ide在控制台输入编译命令_快速编译调试 Redis
  5. iOStextField/textView在输入时限制emoji表情的输入
  6. opengl纹理单元
  7. 最大化 AIX 上的 Java 性能,第 3 部分: 更多就是更好
  8. ubuntu 下安装apache服务器
  9. HDU2011 多项式求和【入门】
  10. FFmpeg总结(十)用ffmpeg进行在视频中加水印图、加gif图
  11. Windows XP Embedded下载
  12. 【java毕业设计】基于javaEE+原生Servlet+MySql的酒店管理系统设计与实现(毕业论文+程序源码)——酒店管理系统
  13. linux 找出僵尸进程,linux 查看僵尸进程
  14. 屏蔽非微信客户端和支付宝登陆登录操作
  15. pcep协议什么意思_SDN学习笔记
  16. 令人眼前一亮的IDEA 2021
  17. 在线装机测试软件,完美装机大师工具V3.0专业版
  18. GDB基本命令(整合)
  19. java8 Stream 使用案例
  20. Java开发环境及其特点

热门文章

  1. UITableviewcell重用机制以及解决重绘出现的重叠现象
  2. 三百元月薪的小资生活
  3. 在github上面下载文件夹的方法666
  4. another rejection from Cambridge MPhil in Management
  5. apple music有一点坏处。。这个乱码有点不本土化啊
  6. 【转】TCP、UDP数据包大小的限制
  7. //todo 的用处
  8. GTK编程——linux下GTK开发环境建立(ubuntu)
  9. 字符串周期--hdu 3746 Cyclic Nacklace
  10. .NET分层登陆——机房收费系统再总结