Lucene / Solr:查询匹配所有限制或仅查询子集

时间:2016-04-28 08:39:08

标签: java solr lucene

我想在Lucene中有一个多重限制查询,它不仅返回符合所有限制的文档(作为第一个结果),还包括仅匹配一部分限制的文档(更糟糕的匹配结尾)结果列表)。

所以说我有来自用户的以下限制:

A:"a" AND B:"b" AND C:"c" 

从技术上讲,我可以执行以下查询逐个

  • A:"a" AND B:"b" AND C:"c"
  • A:"a" AND B:"b"
  • B:"b" AND C:"c"
  • A:"a" AND C:"c"
  • A:"a"
  • B:"b"
  • C:"c"

然后以编程方式聚合(并根据查询的具体方式,顺序)结果,但这似乎是一种可怕的方法。

那么有什么方法可以告诉Lucene,"请提取符合完整条件的文档,但也请提取仅符合我标准子集的文档"

1 个答案:

答案 0 :(得分:0)

这正是OR运算符的用途。它不会随机返回结果文档,而是按分数返回(除非您将另一个值指定为sort参数)。

所谓的协调因子(或公式中的coord-factor(q,d))将惩罚并非所有搜索字段都匹配的文档,例如:如果5个字段中只有4个匹配,则按因子0.8计算。看到 https://lucene.apache.org/core/4_6_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html