Solr:如何获得所有按分数排序并带有关键字列表的文档?

| 我有一个Solr 3.1数据库,其中包含带有两个字段的电子邮件: 约会时间 文本 对于查询,我有两个参数: 今天的日期 关键字数组(\“重要的东西\”,\“也重要\”,\“不那么重要,但比平均水平还重要”) 是否可以创建查询以 获取当天的所有文件并且 按相关性对它们进行排序(以便对其进行排序),以便包含大部分关键字(重要事项)的电子邮件得分最高? 带日期的部分不是很复杂:
fq=datetime[YY-MM-DDT00:00:00.000Z TO YY-MM-DDT23:59:59.999Z]
我知道您可以通过以下方式增强关键字:
q=text:\"first keyword\"^5 OR text:\"second one\"^2 OR text:\"minus scoring\"^0.5 OR text:\"*\"
但是,我如何仅使用关键字对列表进行排序并获得所有条目,而不是进行真正的查询并仅返回一些条目呢? 感谢帮助!     
已邀请:
        您需要在主查询中指定术语,然后通过添加以下内容将日期查询更改为对这些结果的过滤器查询。
fq=datetime[YY-MM-DDT00:00:00.000Z TO YY-MM-DDT23:59:59.999Z]
所以你应该有这样的东西:
q=<terms go here>&fq=datetime[YY-MM-DDT00:00:00.000Z TO YY-MM-DDT23:59:59.999Z]
编辑:有关过滤器查询的更多信息(如rfreak所建议)。 从Solr Wiki-FilterQuery指导-\“现在,什么是过滤器查询?它只是查询的一部分,被特殊处理了。这是在Solr中通过使用fq(过滤器查询)参数指定来实现的q(主查询)参数的结果,可以得到相同的结果,而将查询部分留在主查询中。区别在于查询效率。这是因为过滤器查询的结果被缓存然后用于过滤使用集合交集的主要查询结果。\“ 这些应该已经按照相关性得分排序,这只是Solr的默认行为。您可以通过添加该字段来查看分数。
fl=*,score
如果您在r5时在Solr安装上的管理界面上使用完整界面进行查询,您将看到可以在其中指定过滤器查询,字段和其他选项的地方。您可以查看Solr Wiki,以获取有关这些选项及其用法的更多详细信息。 希望对您有帮助。     
        您可以对以下内容进行首次查询: fq = datetime [YY-MM-DDT00:00:00.000Z TO YY-MM-DDT23:59:59.999Z] 给出与范围匹配的所有文档。然后,对第二个查询使用CachingWrapperFilter,以从第一个查询中的DocSet中查找包含至少一个关键字的文档。它们将根据每个tf-idf进行相关性排名。您可能想首先使用ConstantScoringQuery来以最快的方式获取匹配的docid列表。     
        按相关性排序是solr / lucene的默认行为。 如果您的结果不满意,请尝试将关键字放在引号中 //编辑:追随Paige Cook的答案,使用这样的想法
q=\"important thing\"&fq=datetime[YY-MM-DDT00:00:00.000Z TO YY-MM-DDT23:59:59.999Z]
// 2。 nd更新。通过考虑以下答案:引号不是一个好主意,因为在这种情况下,您只会收到“重要的东西”邮件,而不会收到“同样重要的邮件” 重点是:您正在使用哪些关键字。因为:搜索-重要的事情-导致“重要的事情”邮件的得分最高。但是lucene不知道如何根据关键字对“太重要”或“不是很重要,但要高于平均分”打分。 另一个想法是仅搜索“重要”。但是字段值“ importand something”和“ importand too”给出的得分值几乎相同,因为50%的搜索关键字(在此关键字中为“ imported”)是字段值的一部分。 因此,可能您必须更改关键字。将“ importend to”更改为“也是重要邮件”后,它可以工作,以获取搜索词“ important”和字段值的野兽比率,以便对最短的Mail-discripton进行评分最高价值。     

要回复问题请先登录注册