我正在尝试组织一个 solr 搜索引擎。我已经设置了拼写错误系统和建议。
但是我似乎无法找到如何检索 solr/lucene 中搜索最多的前 10 个单词/术语/关键字。我怎样才能得到这个?我想在我的主页上显示这些。
Solr 不提供这种开箱即用的功能。有StatsComponent,它为您提供各种统计信息,但所有这些都只是数字。
根据您访问 solr 的方式(直接或通过您自己的应用程序),您可以拦截所有调用并记录查询字符串。我在最近的一个项目中做到了这一点,我在其中记录了对数据库的查询。如果您将所有关键字提交到您的 solr 服务器上的其他核心,您可以按照 Hyque 的描述对您的搜索字词进行分面查询
您可以使用 facet 来检索 Top X 单词,如下所示:
http://yourservergoeshere/solr/select?q=*&wt=xml&indent=true&facet=true&facet.query=*&facet.field=message&facet.limit=10&facet.minCount=1
facet.field 的值取决于您要搜索的字段。使用 facet.limit,您将(显然)将结果数量限制为 10。您将在结果末尾找到构面结果,从“facet_counts”
编辑:我真的应该早点睡觉。我没有在您的问题中看到“搜索最多”。对此感到抱歉。
到目前为止,Apache Solr 不提供任何此类功能。对此有一个愿望,并有一个与之对应的 JIRA 票。如果您希望有一天在 Solr 中看到它,您可以投票支持它:https ://issues.apache.org/jira/browse/SOLR-10359 。
stats 组件提供有关统计信息的信息,但它本质上主要是数字。您可以解析服务器日志并想出一种方法来构建经常搜索的术语(例如,将这些日志泵入 SiLK 或 Kibana 以进行可视化)。
如果您能够更改前端并向 UI 添加一些 javascript 代码,或者可以拦截搜索请求并对 API 进行异步或批量调用以进行跟踪,则可以使用SearchStax Analytics,它提供了 Search Analytics 来跟踪搜索、点击、购物车操作、收入等。