如何处理非常常见的关键字搜索

时间:2012-09-04 22:10:48

标签: coldfusion solr coldfusion-9

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

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

这是针对ColdFusion上的 solr ,但我对那些孤立的解决方案持开放态度。

现在我正想着提出一系列停用词并阻止这些搜索完全发生。

2 个答案:

答案 0 :(得分:2)

如果搜索需要很长时间,可能是因为您没有限制返回的结果数量。 <cfsearch>标记具有maxrows属性以及startrow属性,您可以使用该属性来限制或分页数据。或者,您可以通过<cfhttp>电话直接致电Solr的网络服务:

<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/

答案 1 :(得分:0)

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

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

例如,用户搜索serendipitous education。您确定serendipitous有11个匹配,education有900000个匹配。因此,您首先应用serendipitous过滤器,从而产生11个匹配项。然后应用education过滤器,产生7场比赛。

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