Solr suggest 搜索建议功能 配置问题

2019-03-27 01:03|来源: 网路

<searchComponent  name="suggest" class="solr.SpellCheckComponent">
   <!--分词方法 方法不同 建议的结果区别很大-->
    <str name="queryAnalyzerFieldType">string</str>

    <lst name="spellchecker">

        <str name="name">suggest</str>

        <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>

        <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
        <!--相应字段-->
        <str name="field">ProductName</str>

        <float name="threshold">0.0001</float>

        <str name="spellcheckIndexDir">spellchecker</str>

        <str name="comparatorClass">freq</str>

        <str name="buildOnOptimize">true</str>

        <!--<str name="buildOnCommit">true</str>-->

    </lst>

</searchComponent>

<requestHandler  name="/suggest" class="solr.SearchHandler" startup="lazy">

    <lst name="defaults">

        <str name="spellcheck">true</str>

        <str name="spellcheck.dictionary">suggest</str>

        <str name="spellcheck.onlyMorePopular">true</str>

        <str name="spellcheck.extendedResults">false</str>
        <!--建议数量-->
        <str name="spellcheck.count">10</str>

        <str name="spellcheck.collate">true</str>

    </lst>

    <arr name="components">

        <str>suggest</str>

    </arr>

 </requestHandler>

在solrconfig.xml中的配置如上

地址:http://localhost:8080/solr/Product/suggest/?q=衣

结果

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">1</int>
</lst>
<lst name="spellcheck">
<lst name="suggestions">
<lst name="衣">
<int name="numFound">9</int>
<int name="startOffset">0</int>
<int name="endOffset">1</int>
<arr name="suggestion">
<str>衣裙</str>
<str>衣柜</str>
<str>衣架</str>
<str>衣裤</str>
<str>衣服</str>
<str>衣物</str>
<str>衣橱</str>
<str>衣帽</str>
<str>衣帽间</str>
</arr>
</lst>
<str name="collation">衣裙</str>
</lst>
</lst>
</response>

 


转自:http://www.cnblogs.com/steben/p/3612074

相关问答

更多
  • 建议的来源使用中文词库
  • 要配置建议器的字段应为store=true 。 它不需要索引。 建议器配置将根据suggestComponet的提供配置构建字典。 name字段已存储为true ,其中suggest_ngram不存在。 您需要更新架构配置,如下所示: 您还需要提供参数suggest.dictionary ,这是您用于建议的字典。 对你而言,它是defa ...
  • Nutch是构建网络爬虫和搜索引擎的框架。 Nutch可以完成从收集网页到建立倒排索引的整个过程。 它也可以将这些索引推送到Solr。 Solr主要是一个搜索引擎,支持分面搜索和许多其他简洁的功能。 但Solr不提取数据,你必须提供它。 因此,也许你必须要问的第一件事是在你是否有可用的索引数据(在XML中,在CMS或数据库中)。 在这种情况下,您应该只使用Solr并为其提供数据。 另一方面,如果你不得不从网络上获取数据,你可能更愿意使用Nutch。 Nutch is a framework to build ...
  • 它没有工作,因为solr在SolrCloud模式下运行。 有两种方法可以在solrCloud模式下执行建议: 使用distrib = false参数。 这将仅从您在命令中访问的一个分片中获取数据。 您可以将以下内容添加到组件定义本身。 false 使用shards和shards.qt参数搜索所有分片。 shards参数将包含要包含在查询中的所有分片的逗号分隔列表。 shards.qt参数将定义您要访问的reat API。 shards.qt:请求分 ...
  • 要使用多个建议词典(可以应用不同的分析器),您可以使用文档中显示的“多个词典”配置 : mySuggester FuzzyLookupFactory
    只需使用wordDelimiter过滤器https://lucene.apache.org/core/4_4_0/analyzers-common/org/apache/lucene/analysis/miscellaneous/WordDelimiterFilter.html
  • 在你的solrconfig.xml中,两个建议的lookupImpl参数都是org.apache.solr.spelling.suggest.fst.AnalyzingInfixLookupFactory org.apache.solr.spelling.suggest.fst.AnalyzingInfixLookupFactory 尝试更改suggester2 lookupImpl FuzzyLookupFactory
    slf4j是一个日志记录外观,这意味着它实际上不会写任何日志。 它可以配置为使用log4j进行日志记录,方法是添加slf4j-log4j jar (假设您正在使用log4j 1.2.xx)并从WEB-INF/lib文件夹中删除slf4j-jdk14 jar。 我假设您的应用程序服务器将log4j类暴露给solr webapp - 如果不是这样,那么您还需要将log4j jar添加到solr WEB-INF/lib目录中。 slf4j is a logging facade, meaning that it ...
  • 您可以只返回每个文档的“id”,然后从MySQL获取这些文档作为永久存储,而不是为每个文档返回400个字段。 因此,对于该示例,如果每次搜索返回25个文档ID,则在您的应用程序中,您可以从MySQL获取25个文档(可以进行并行调用) 根据我的经验,返回更多的字段会增加qTime。 Instead of getting 400 fields back for each document, you can get back just the "id" of each document and then get ...
  • 最后我找到了解决方案: 即使您从文件而不是索引字段构建建议字典,您也必须在solrconfig中指定索引字段。 因此,在schema.xml从我们已创建的text_suggest字段类型中创建一个虚拟字段: 然后在solrconfig.xml中将text_suggest行添加到searchCompo ...