在Solr的自动完成/自动补充-Suggester组件:
1.可直接启动example/start.jar启动jetty;访问
[url]http://localhost:8983/solr/spell?q=delll ultrashar&spellcheck=true&spellcheck.collate=true&spellcheck.build=true[/url]
2.配置solrconfig.xml,
①.引用sourceLocation词典。
<searchComponent class="solr.SpellCheckComponent" name="suggest">
<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>
<!-- Alternatives to lookupImpl:
org.apache.solr.spelling.suggest.fst.FSTLookup [finite state automaton]
org.apache.solr.spelling.suggest.fst.WFSTLookupFactory [weighted finite state automaton]
org.apache.solr.spelling.suggest.jaspell.JaspellLookup [default, jaspell-based]
org.apache.solr.spelling.suggest.tst.TSTLookup [ternary trees]
-->
<str name="field">name</str> <!-- the indexed field to derive suggestions from -->
<float name="threshold">0.005</float>
<str name="buildOnCommit">true</str>
<str name="sourceLocation">solr\conf\spellings.txt</str>
</lst>
</searchComponent>
<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest">
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.count">5</str>
<str name="spellcheck.collate">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
②创建索引目录spellcheckIndexDir,默认在内存中创建,
<searchComponent name="suggest" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<str name="name">default</str>
<str name="classname">solr.IndexBasedSpellChecker</str>
<str name="field">spell</str>
<str name="spellcheckIndexDir">D:\opensource\solr\solr1\solr\data\spellchecker</str>
<str name="accuracy">0.7</str>
<float name="thresholdTokenFrequency">.0001</float>
</lst>
<str name="queryAnalyzerFieldType">textSpell</str>
</searchComponent>
<requestHandler name="/suggest" class="solr.SearchHandler">
<lst name="defaults">
<str name="df">text</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck.onlyMorePopular">false</str>
<str name="spellcheck.extendedResults">false</str>
<str name="spellcheck.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
添加到solrconfig.xml,重启jetty,访问
http://localhost:8983/solr/suggest?q=pizza&spellcheck.build=true,
spellings.txt内容:
pizza
history
结果:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">19</int>
</lst>
<str name="command">build</str>
<lst name="spellcheck">
<lst name="suggestions">
<lst name="pizza">
<int name="numFound">1</int>
<int name="startOffset">0</int>
<int name="endOffset">5</int>
<arr name="suggestion">
<str>pizza</str>
</arr>
</lst>
<str name="collation">pizza</str>
</lst>
</lst>
</response>
在程序中访问调用solrj.jar的api.
注意:如果是删掉原来的spellcheck在重启时可能报错:
“SolrException: Unknown Search Component: spellcheck at org.apache.solr.core.SolrCore”
在solrconfig.xml中搜索spellcheck将多余的删掉再重启。
参考:
http://wiki.apache.org/solr/SpellCheckComponent
http://wiki.apache.org/solr/Suggester/
分享到:
相关推荐
“Suggester”部分讲解了如何使用Solr的建议器功能,该功能可以为用户输入的查询提供实时建议。 “MoreLikeThis”部分介绍了如何查找与给定文档类似的其他文档。 在“Pagination of Results”部分,解释了如何对...
Solr Suggester 是 Apache Solr 的一个功能强大的特性,用于提供自动补全和建议功能。这个"solr-suggest-sample-ui"是一个演示项目,它展示了如何在实际应用中集成和使用 Solr Suggester。下面我们将深入探讨 Solr ...
Solr是中国Apache软件基金会开发的一款高性能、全文搜索引擎服务器,它基于Lucene库并提供了更高级别的服务,如分布式搜索、缓存、复制和集群管理。Ik分词器是Solr中常用的中文分词插件,它能有效地对中文文本进行...
$ PODMAN=docker make start-solr 运行API // build the api$ go build -v -o api// start the api with the initialization options$ ./api -create-collection -init-schema -index-data -init-suggester 运行...
开发者需要在Solr端配置相应的自动补全逻辑,通常需要使用Solr的suggester组件,它支持多种搜索建议算法,比如Term Query Suggester、Document Lookup Suggester等。 5. 执行效果。在前端页面配置完成后,当用户...
这通常通过配置SpellChecker或Suggester组件来实现,它们可以基于用户的输入历史或者字典文件生成推荐的查询建议。 3. **分组查询**:Solr支持基于某个字段的分组查询,可以将搜索结果按照特定字段(如类别、品牌等...
这通常通过使用Suggester组件实现,它可以基于用户的部分输入提供相关建议。 9. **多格式支持**:Solr支持多种数据输入格式,如JSON、XML、CSV等,方便从各种数据源导入数据。 10. **安全与访问控制**:Solr可以...
Solr的建议组件(Suggester)可以结合pinyinAnalyzer,生成基于拼音的自动补全建议,提升用户交互体验。例如,当用户输入“shang”时,系统能快速返回包含“上海”、“商品”等匹配结果。 总结来说,pinyinAnalyzer...
后端可以使用Python(如Django的Haystack框架)或Java(如Solr、Elasticsearch等搜索引擎)来处理查询并返回结果。 4. 工具应用 在开发过程中,开发者可以借助各种工具来辅助实现。例如,使用Elasticsearch作为搜索...
通过Solr或Elasticsearch等工具,可以将一个大索引拆分成多个小索引(分片),然后在多台机器上并行处理,提高搜索性能和可扩展性。 八、优化与性能调优 为了保持最佳性能,需要定期对Lucene索引进行优化。优化过程...
对于大型系统,可能需要分布式搜索解决方案,如Solr(基于Lucene)或Elasticsearch,它们提供了集群管理和更高级的特性。 总结来说,Ajax和Lucene的结合使用可以打造出一个响应迅速、功能丰富的搜索引擎。Ajax负责...