zoukankan      html  css  js  c++  java
  • compass和paoding分词器的基本使用

    1.实现搜索的技术:

    数据库查询:like查询;lucene全文检索技术;

    1)在数据量比较大,查询字段比较多的情况下,如果采用数据库like sql查询,性能比较差;采用lucene来查询,性能相对于数据库like sql查询要好些;

    2)如果采用lucene进行搜索,搜索到的结果相关度比较高,而且会把匹配度高的记录排在最前面,而数据库的like语句查询只会查询回来含有关键字的记录,其内容相关度不高,并且不能实现把匹配度高的记录排在前面;

    使用baidu/google搜索引擎搜索某个关键字,搜索结果比较靠前的是匹配度比较高的数据;

    3)采用lucene进行搜索,能够进行高显示,而数据库like sql语句查询达不到这一点(可用js页面实现)

    2.建立索引,根据分词器对这个内容,分完词,放在索引中

    查询索引,输入的关键字进行分词,分完词就查询索引;

    分词原理:一元分词(一个字一个字分)/二元词(两个字两个字分)/字典分词匹配度是最好的,但必须要建立字典,目前关于中午这个分词,叫paoding解牛分词,(使用字典分词):用它解析分词比较好;

    不准备用lucene的API来进行开发,使用对lucene进行面向对象封装的一个框架compass API来完成商品搜索功能;相当于不使用JDBC API操作数据库,而使用Hibernate API操作数据库原理是一样的;

    做软件一直强调的是面向对象,所以用Hibernate api(ORM),所以使用面向对象方式操作搜索引擎索引,所以就使用compass api(object search engine/mapping osem),但底层还是使用的lucene;

    学习compass API,只要会hibernate,掌握compass api只需半个小时

    1)设计实体,并完成实体的映射元数据(hbm.xml/@Entity注解)

    hibernate:3.0之后可以用注解方式,hibernate解压包里的doc文档可以查看用注解方式进行映射

    在实体类上加上:@Searchable作用:把该类定义为搜索实体,该搜索实体与搜索的document进行映射

    @SearchableId作用:定义该属性为搜索实体的标识属性;默认映射到document的id字段

    @SearchProperty(name="跟document中的哪个字段相映射",index=Index.NOT_ANALYZED(不分词,但建立索引)/ANALYZED(分词并建立索引),store=Store.YES(默认是属性值保存到索引文件中))

    2)利用hibernate的api完成对实体的添加、删除、修改、查找这些操作,

  • 相关阅读:
    移动方法
    linux主编号的动态分配
    linux 分配和释放设备编号
    linux设备编号的内部表示
    linux主次编号
    linux模块参数
    linux scull 的设计
    linux模块加载竞争
    linux清理函数
    linux初始化中的错误处理
  • 原文地址:https://www.cnblogs.com/sunruntheway/p/4270947.html
Copyright © 2011-2022 走看看