我們在使用BoooleanQuery的時候,有的時候想要命中其中的至少N項,就會用到setMinimumNumberShouldMatch方法。
比如:
BooleanQuery bq = new BooleanQuery();bq.add(new TermQuery(new Term("title","java")), BooleanClause.Occur.SHOULD);bq.add(new TermQuery(new Term("title","C#")), BooleanClause.Occur.SHOULD);bq.add(new TermQuery(new Term("title","javascrphp")), BooleanClause.Occur.SHOULD);bq.setMinimumNumberShouldMatch(3);query字符串為 : (title:java title:C# title:Javascript title:php)~3當我們把該字符串直接當做solr的q參數去檢索的時候,solr會提示我們語法錯誤。而,我們有的時候又必須使用該項功能,比如說我要招一個java、C#、js、php至少會三項的人(僅僅是個例子),這個時候就需要使用到
solr的edismax
檢索的時候,我們選擇defType =edismax mm =3 ,mm表示至少需要滿足的BooleanClause 的個數
|
新聞熱點
疑難解答