zoukankan      html  css  js  c++  java
  • solr的suggest模块

    solr的suggest模块

    solr有个suggest模块,用来实现下拉提醒功能,就是输入了一个文本之后,进行文本建议查找的功能。

    suggest请求的url

    http://localhost:8983/solr/hotquestions/suggest?suggest=true&suggest.build=true&suggest.dictionary=mySuggester&wt=json&suggest.q=elec
    

    这里可以看到有几个参数:

    suggest=true

    这个参数必须为true,表示我这次请求是suggest请求。

    suggest.q

    进行查询建议的文本

    suggest.dictionary

    搜索组建中词典的名字,这个参数必须填写,你可以在请求体中带上这个参数,也可以在请求参数中带上。

    suggest.count

    suggest请求返回的suggest数。

    suggest.cfg

    这个不是必填的,如果suggester支持,用于内容过滤。

    suggest.build

    如果设置为true,这个请求会导致重建suggest索引。
    这个字段一般用于初始化的操作中,在线上环境,一般不会每个请求都重建索引,如果线上你希望保持字典最新,最好使用buildOnCommit或者buildOnOptimize来操作。

    suggest.reload

    如果设置为true,会重新加载suggest索引。

    suggest.buildAll

    如果设置为true,会重建所有suggest索引。

    suggest.reloadAll

    如果设置为true,会重新加载所有suggest索引。

    suggest模块的配置

    <searchComponent name="suggest" class="solr.SuggestComponent">
        <lst name="suggester">
            <str name="name">mySuggester</str>
            <str name="lookupImpl">FuzzyLookupFactory</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">cat</str>
            <str name="weightField">price</str>
            <str name="suggestAnalyzerFieldType">string</str>
        </lst>
    </searchComponent>
    

    name

    suggester的名字,如果设置多个,可以在请求中指定。

    lookupImpl

    查找方式的具体实现,有几种方式:

    • AnalyzingLookupFactory: 这个查询方式先对查询的输入文本进行分析,构建出一个FST树,然后再进行查询。
    • FuzzyLookupFactory: 这个查询方式是AnalyzingLookupFactory的扩展,只不过是一种模糊匹配。
    • AnalyzingInfixLookupFactory: 这个查询方式对输入的文本进行分析,然后建议出前缀匹配的索引文本。
    • BlendedInfixLookupFactory: 这个查询方式是AnalyzingInfixSuggester的扩展,这个查询方式可以为分析后的文本设置一些权重,你可以设置权重正序或逆序。
    • FSTLookupFactory: 基于自动机的查询。这个方式构建比较慢,但是使用内存更少。除非你需要更复杂的结果,否则就不需要使用这种方式。
    • TSTLookupFactory: 一个简单的,基于trie树的查找。
    • WFSTLookupFactory:
    • JaspellLookupFactory:

    dictionaryImpl

    字典的具体实现,具体有几种方式:

    • DocumentDictionaryFactory: 一个基于词语,权重,和一个有效的索引中的负荷。
    • DocumentExpressionDictionaryFactory: 和DocumentDictionaryFactory一样,但是允许用户设置复杂的"weightExpression"标签来设置权重
    • HighFrequencyDictionaryFactory: 允许增加一个阀值来修改返回结果
    • FileDictionaryFactory: 允许使用一个外部的文件来包含建议的结果。权重也是可以在外部文件中有所加载的。
    <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
      <lst name="defaults">
        <str name="suggest">true</str>
        <str name="suggest.count">10</str>
      </lst>
      <arr name="components">
        <str>suggest</str>
      </arr>
    </requestHandler>
    

    suggest的handler,主要设置了建议返回的默认个数,默认使用的suggest组件等。

    参考文章

    官方文档

  • 相关阅读:
    面试题中关于String的常见操作
    base64 加密 解密 Java代码实现 【尝试 博客园 用Markdown 编写】
    md5 32位 加密原理 Java实现md5加密
    base64 加密原理 解密原理
    2018年 10月份开始执行的最新税率表 2019年1月 小孩住房贷款等怎么扣
    安装Zookeeper和kafka,安装完毕后,遇到的错误
    Jmeter自动化测试 数据驱动测试,将数据存入csv文件中来调用,或将数据存在DB中进行调用
    Jmeter 同一个测试计划下的多个线程组 执行顺序 希望调整为顺序执行
    Json多层嵌套,要怎么提取?
    总结下我遇到过的接口测试
  • 原文地址:https://www.cnblogs.com/yjf512/p/5166382.html
Copyright © 2011-2022 走看看