我在一个项目中使用Solr
5.2.1,在dismax
/edismax
解析器的mm
参数上遇到了一些疑问。
问题:
-
mm
不管总输入项计数吗?文档说是的,但是当我将其设置为3,并输入单个术语时,它仍然可以获得记录,因此似乎不管总输入术语计数。 -
mm
的默认值是多少?文件说它是100%
,但在我的查询测试中,它似乎是1
。顺便说一下,我没有在solrconfig.xml
或schema.xml
中找到mm
的配置。
帮忙吗?Thx .
@Update:
查询第一个问题的url:
http://localhost:8983/solr/demo/select?q=new+york&start=0&wt=json&indent=true&defType=edismax&qf=title&mm=3&stopwords=true&lowercaseOperators=true
有两个词new
和york
,查询结果为:
- 不指定
mm
,返回3条记录, -
mm
= 2,返回1条记录, -
mm
= 3,也返回1条记录,
所以,我猜它会在查询之前先将mm更改为max term。
Answer-2:
如果在查询中指定了no mm
参数,或者作为solrconfig.xml
的默认值,则使用q.op
参数的有效值(在查询中,作为solrconfig.xml中的默认值,或者来自schema.xml中的'defaultOperator'选项)来影响行为。因此mm
的默认行为由q.op
参数决定。如果q.op
是有效的AND
,则mm=100%
;如果q.op
为OR
,则为mm=1
。
最小编号应符合规格格式:
无论计算结果是多少,大于可选子句数目的值或小于1的值都不会被使用。(即:无论计算结果有多低或多高,所需的最小匹配数永远不会低于1或大于子句数。
表示所需的数字永远不会小于1,也不会大于查询中存在的术语数。如果查询中有三个词,mm因子为5,它仍然会产生一个匹配,因为词的数量少于需要匹配的可选的词。所有的条件匹配总是会得到一个命中,否则它只是零匹配的所有查询条件少于x。