私は奇妙な問題に直面しています。 SolrJ APIのバグのようです:edismaxで検索クエリを実行しようとすると、「qf」フィールドが正しくエンコードされません。SolrJ 5.5.0 qf値(クエリフィールド)が正しく照会されない、または全く照会されない
私は "QF" の値としてこれを使用しようとしています:
タイトル^ 40 + details_plain^20
SolrQuery.set()メソッドはクエリとしてこれを追加それはエンコードされる必要があるので動作しません。私はそれを自分でエンコードするURLとき
が、それは次のようになります。
QF =タイトル%5E20
しかし5E40 + details_plain%Iは、クエリで、その結果、最終的なクエリが自動的に再びそれをコードしていることを設定しますそしてそれを作る:
QF =タイトルも間違っていると、クエリが言って失敗%255E40%2Bdetails_plain%255E20
」未定義のフィールドテキスト "である。なぜなら、Solrは何を検索したいのか分かっていないので、デフォルトの" text "フィールドで検索しようとしたからだ。ここで
は、コードからの抜粋です:
SolrClient solr=null;
SolrQuery query = new SolrQuery();
solr = new CloudSolrClient(zookeepers, "/");
query.set("deftype", searchConfig.getDeftype());
//query.set("df", "details_plain"); //unless i uncomment it the query fails as qf is not correct
query.set("fl", searchConfig.getFl());
query.set("mm", searchConfig.getMm());
query.set("qf", searchConfig.getQf());
query.set("rows", searchConfig.getRows());
query.set("q", searchPhrase);
query.set("collection", searchConfig.getCollection_name());
query.set("indent", "on");
query.set("omitHeader", "true");
query.set("wt", "json");
QueryResponse response = solr.query(query);
は、なぜそれが元の文字列をエンコードしませんが、私はエンコードされた文字列として送信する場合は、再度それをコードしていますか?
私は何かを見落としている可能性がありますので、あなたのすべてが何を考えているか教えてください。私は何か間違っているのですか?それとも、Solrのソースコードを入手して、これを自分で修正しようとしていますか?
あなたの質問では、エンコーディングの問題について話していますが、答えは間違ったパラメータに関するものです。このq/aが意味をなさないと確信していますか? IMHOあなたはそれをまっすぐに書き直すか、それを削除する必要があります。 – freedev