2015-02-09 53 views
0

當我從Lucene轉換到Solr時,看到SolrJ如何實現這樣的基本操作是非常不幸的。 Lucene的Querying API更加完整,給我提供了全部的能力。從Lucene過渡到Solr(以SolrJ作爲客戶端) - 查詢?

我來這裏問,如果任何人有任何麻煩使用Lucene的BooleanQuery.toString()到SolrQuery(字符串查詢)?

實施例:

BooleanQuery booleanQuery = new BooleanQuery(...stuff...); 
SolrQuery solrQuery = new SolrQuery(booleanQuery.toString()); 

什麼是使用上述策略的副作用?任何優點,缺點?

非常感謝!

回答

0

只要你保持你的查詢非常簡單,這應該工作,但如果你遠遠超出這個範圍,就會崩潰。 Lucene查詢語法不能表示由lucene查詢API產生的所有可能的查詢。 Query.toString()的輸出可能不能準確地表示查詢對象的所有內容,並且通常根本不是有效的查詢語法。

+0

答案實際上是在使用dismax發出查詢時使用q.alt參數。我對此進行了艱苦的研究。 – Renatinn 2015-02-10 18:12:32

+0

dismax和edismax都不支持任何'Query.toString()'輸出。 – femtoRgon 2015-02-10 18:20:02

+0

嗯,我將不得不找到這個。 – Renatinn 2015-02-10 18:24:10