2017-03-16 21 views
1

Spring Data Solrで生成されたSolrクエリで、以下のパラメータ(qf、bq)を追加しようとしています。Apache Solr用のSpringデータ拡張DisMaxパラメータ

Solrのパラメータは、次のとおりです。

qf => Spring Data Solr Method? 
bq => Spring Data Solr Method? 

私は私がQFとBQのparamsを追加することができますどのようにhttps://jira.spring.io/browse/DATASOLR-153

QF未解決の問題を見た

fq => addFilterQuery 
fl => addProjectionOnField 
defType => setDefType 
qt => setRequestHandler 

以下の方法を見つけることができましたSpring Data Solrを使用して作成されたSolrクエリ。

おかげ

答えて

1

あなたはSolrClientにアクセスするためのテンプレートレベルでSolrCallbackを使用して、そこからクエリを実行するか、またはカスタムクエリのタイプにQueryParser自分自身を登録することができます。

たぶんのようなもの:避けるために

@Bean 
public SolrTemplate solrTemplate(SolrClient client) { 

    SolrTemplate template = new SolrTemplate(client); 
    template.registerQueryParser(EdismaxQuery.class, new EdisMaxQueryParser()); 
    return template; 
} 

class EdismaxQuery extends SimpleQuery { 
    // ... add stuff you need. Maybe `autoRelax` 
} 

class EdisMaxQueryParser extends QueryParserBase<EdismaxQuery> { 

    DefaultQueryParser defaultQueryParser = new DefaultQueryParser(); 

    @Override 
    public SolrQuery doConstructSolrQuery(EdismaxQuery source) { 

     // just use the default parser to construct the query string in first place. 
     SolrQuery target = defaultQueryParser.constructSolrQuery(source); 

     // add missing parameters 
     target.add("defType", "edismax"); 
     target.add("qf", source....); 

     return target; 
    } 
} 
+0

私はこのエラーを得ました.solr.core.QueryParserBase $ NamedObjectsQueryをEdismaxQuery'にキャストできません – kk17

0

org.springframework.data.solr.core.QueryParserBase$NamedObjectsQuery cannot be cast to EdismaxQuery

EdisMaxQueryParserは次のようになります。 `org.springframework.data:

class EdisMaxQueryParser extends QueryParserBase { 
    @Override 
    public SolrQuery doConstructSolrQuery(SolrDataQuery source) { 
     // your stuff 
    } 
} 
関連する問題