Solr MM(最小匹配)和q.alt行为

时间:2014-08-28 19:24:53

标签: solr lucene

我正在尝试实施一个搜索,迭代我们网站上的新注册并查找重复项。

对于原型设计和游戏,我使用字段

为我的测试用户编制了索引
  • 的firstName
  • lastName的
  • city

所以说我们有一个新用户,他的名字叫Rob Lewis,他住在西雅图。我想对所有匹配至少2个firstName的现有用户进行MM搜索:Rob lastName:Lewis city:Seattle。

所以我想找到

  • 所有Rob Lewises
  • 所有住在西雅图的Robs
  • 所有住在西雅图的Lewises

我认为我应该可以用dismax(或edismax)和

来做到这一点
  • q.alt = firstName:Rob lastName:Lewis city:Seattle
  • 毫米= 2

但它似乎不起作用。 MM对结果没有影响,我只是得到了相同的列表,好像我没有指定MM(即所有Robs,所有Lewises和所有住在西雅图的用户)。

另外只是为了测试我尝试了mm = 100%,我希望只能匹配西雅图的Rob Lewis。然而它再次匹配所有Robs,所有Lewises和所有住在西雅图的用户)。

如何达到理想的效果?

1 个答案:

答案 0 :(得分:1)

除非我误解了您的问题,否则无需使用q.alt - 您可以q直接使用defType=edismax。我将回答问题的其余部分(使用q.alt)。

q.alt参数默认使用Lucene查询语法,mm仅被识别为(e)dismax参数。

您可以指示Solr使用(e)dismax解析器以及q.alt选项以及localParams:

q.alt={!dismax}firstName:Rob lastName:Lewis city:Seattle

您还可以通过localparams提供特定的mm值:

q.alt={!dismax mm=2}firstName:Rob lastName:Lewis city:Seattle
相关问题