3

如果用户搜索在 solr 索引中非常非常常见的关键字,我希望能够返回有用的记录。例如education.

在这种情况下,接近 99% 的记录中都会包含该词。所以搜索这个词或类似词需要很长时间。

这是针对ColdFusion 上的 solr 的,但我对仅与 solr 隔离的解决方案持开放态度。

现在我正在考虑提出一个停用词列表,并完全阻止这些搜索发生。

4

2 回答 2

2

如果搜索需要很长时间,可能是因为您没有限制返回的结果数量。<cfsearch>标签有一个maxrows属性,也有一个属性startrow,你可以用它来限制或分页数据。或者,您可以通过调用直接调用 Solr 的 Web 服务<cfhttp>

<cfhttp url="http://localhost:8983/solr/<collection_name>/select/?q=<searchterm>&fl=*,score&rows=100&wt=json" />

Solr 默认会返回 10 行;您可以使用rows参数更改它。您也可以使用该start参数(请注意,Solr 以 0 而不是 1 开始计数)。我相信这个解决方案更灵活,特别是如果您使用的是 CF 9,因为它允许您在对分数以外的字段进行排序时进行分页。

您可以在此处找到更多详细信息: http ://www.thefaberfamily.org/search-smith/coldfusion-solr-tutorial/

于 2012-09-05T12:57:18.253 回答
0

如果用户只搜索一个非常常见的术语,那么您需要限制搜索结果并告知用户匹配项太多。

在更一般的情况下,您希望执行两次(至少)方法。获取您的搜索词并执行查找以确定它们的“共同点”。您希望首先根据最不常用的术语进行过滤,最后根据最常用的术语进行过滤。

例如,用户搜索serendipitous education。您确定您有 11 个匹配serendipitous项和 900000 个匹配项education。因此,您serendipitous首先应用过滤器,得到 11 个匹配项。然后应用education过滤器,得到 7 个匹配项。

快速搜索的关键是索引和预先计算的统计信息。如果您手头有这样的统计数据,您可以动态创建优化的方法。

于 2012-09-06T03:48:05.960 回答