Search code examples
solrlucenedismax

dismax query parse - mm attribute


  "mm":"2",
  "q":"IBASEDESCRIPTION:(ankor sunnyvale tokyo^3 london labs)",
  "defType":"dismax",
  "fl":"score, IBASEDESCRIPTION",
  "q.op":"AND",
  "rows":"3",
  "debug.explain.structured":"true",
  "debugQuery":"on"

This is what I see in the response header.

mm=2 it means 2 optional clauses should match. q.op is AND - I assumed that conditions between the clauses are AND

I expect the following field not to match:

Level 3 Communications-london
akamai-level 3-london

But they are part of the results.

Could anyone help me to understand the behavior here?

I suspect it is because ^3 in the tokyo field. But that's what the boosting factor.


Solution

  • mm=2 does not mean two optional clauses should match - it means that two clauses should match. q.op does not take effect when mm is set.

    If no 'mm' parameter is specified in the query, or as a default in solrconfig.xml, the effective value of the q.op parameter (either in the query, as a default in solrconfig.xml, or from the defaultOperator option in the Schema) is used to influence the behavior.

    Why those specific entries are included is hard to say without seeing the analysis for the field and the actual value indexed (the debug query will include information about what terms are being hit for each field and how much it contributes to the score).

    You should also use qf here instead of having the field name present when using the dismax handler.