2011-10-11 78 views
2

我想指定排序在我的查詢字符串字段,但看到內存問題,因爲索引有大約50M文檔。Solr排序性能問題

爲什麼Solr實際上將索引中的所有文檔的字段值排序,而不僅僅是查詢返回的匹配值。是否有這些性能問題的替代方案?

+0

能否請你告訴你的要求? – ffriend

+0

這裏是... q = -uid:XXX +%2B(fid:XXX)&sort = firstName%20asc SolrQuery result = new SolrQuery(); result.setFields( 「UID,得分,名字」); 。 。 。 。 。 。 result.setQuery(query.toString()); result.setSortField(「firstName」,ORDER.asc); – Satya

回答

1

對於您的查詢,使用過濾器查詢可能會更快。

q=*:*&fq=-uid:XXX&fq=%2B(fid:XXX)&sort=firstName%20asc 

http://wiki.apache.org/solr/CommonQueryParameters

+0

你的意思是使用rangeQueries爲fq? – Satya

+1

不,我發現過濾器查詢往往工作得更快,因爲它們限制了可返回的結果集,這使得排序更容易。既然你的查詢很簡單,我會試試看。 – Jimtronic

+0

它不會加載索引中所有文檔的字段值嗎? – Satya