zoukankan      html  css  js  c++  java
  • 搜索引擎 solr

    1. 是Nosql技术

    1.创建索引

    举例子:

    文档一:solr是基于Lucene开发的企业级搜索引擎技术

    文档二:Solr是一个独立的企业级搜索应用服务器,Solr是一个高性能,基于Lucene的全文搜索服务器

    首先经过分词器分词,solr会为分词后的结果(词典)创建索引,然后将索引和文档id列表对应起来,如下图所示:

    比如:solr在文档1和文档2中都有出现,所以对应的文档ID列表中既包含文档1的ID也包含文档2的ID,文档ID列表对应到具体的文档,并体现该词典在该文档中出现的频次,频次越多说明权重越大,权重越大搜索的结果就会排在前面。

    solr内部会对分词的结果做如下处理:

    1.去除停词和标点符号,例如英文的this,that等, 中文的"的","一"等没有特殊含义的词

    2.会将所有的大写英文字母转换成小写,方便统一创建索引和搜索索引

    3.将复数形式转为单数形式,比如students转为student,也是方便统一创建索引和搜索索引

    2.索引搜索过程

    知道了创建索引的过程,那么根据索引进行搜索就变得简单了。

    1.用户输入搜索条件

    2.对搜索条件进行分词处理

    3.根据分词的结果查找索引

    4.根据索引找到文档ID列表

    5.根据文档ID列表找到具体的文档,根据出现的频次等计算权重,最后将文档列表按照权重排序返回

    3 支持的查询逻辑 

      1.必选词汇:  and 或者 + 

      2.可选词汇: OR

      3.排除词项:  NOT或者 -

      4.通配符模糊匹配: *

      5.区间搜索: eg:createTime [2020-01-01 to 2020-01-02]

      6.模糊/编辑距离搜索 : 精确匹配用户文本,灵活处理拼写错误,对正确的拼写做出细微的修正。eg: administrator~  可以匹配到administrator,administrater,administratior 等

       7.邻近搜索

    参考:https://blog.csdn.net/qq_42809504/article/details/82983984

  • 相关阅读:
    线程中一些常用方法的分析
    Java中获取路径的方法_自我分析
    Mybatis 一对一,一对多,多对一,多对多的理解
    页面刷新两次为什么取不到值
    排序--插入
    排序--冒泡
    页面刷新两次为什么取不到值
    容器模式
    java操作oracle的blob,clob数据
    Redis基本操作命令
  • 原文地址:https://www.cnblogs.com/interfacehwx/p/11038081.html
Copyright © 2011-2022 走看看