使用lucene 5.2.1,我有一個BooleanQuery,它將幾個術語查詢結合在一起。每次需要運行查詢時,都會使用'new'運算符重新創建布爾查詢和所有子查詢。我想避免調用'new'並重新創建如此多的查詢對象。是否有可能只更新術語查詢中的術語而無需每次重新創建布爾或術語查詢對象?可能重複使用具有不同術語的lucene查詢對象嗎?
0
A
回答
1
否查詢構建起來很便宜,而且不是爲重用設計的。
這將有可能重新使用BooleanQuery,在一定程度上:
BooleanClause firstClause = boolQuery.clauses.get(0);
//change the first clause to use a different query.
firstClause.setQuery(myNewSubquery);
//Set the BooleanClause.Occur, if you wish
firstClause.setOccur(BooleanClause.Occur.MUST);
當然,你可以添加新的子查詢像往常一樣,但沒有辦法刪除的子查詢。
重複使用TermQuery
是不可能的。你可以得到底層的Term
,但是你不能修改它。大多數查詢都有類似的故事有些人,如果你看起來足夠近,你可以找出修改方法,但大部分你不能。
但是,構建查詢不應該是一個昂貴的操作。我相當確定,即使您可以有效地重用查詢,它也不會對性能產生明顯的影響。運行查詢是昂貴的部分,而不是構建它。無論如何,運行查詢的第一部分是重寫它,這涉及到創建一堆新的查詢,所以即使您可以自行構建,Lucene仍然會在後臺完成。
如果你有一個實際的性能問題,你正在嘗試解決,我會建議分析獲得更多關於其實際原因的信息。如果你沒有,那麼don't worry about it。
相關問題
- 1. 重複使用Lucene查詢對象
- 2. Lucene術語查詢
- 3. Elasticsearch - Lucene查詢中所需的術語
- 4. 從Lucene的查詢中提取術語
- 5. Lucene 3.0.3數字術語查詢
- 6. 從lucene查詢獲取術語計數
- 7. 如何使用Lucene IndexReader查找術語?
- 8. Java Lucene - BooleanQuery和QueryParser的不同結果查詢相同的Lucene查詢語言
- 9. 具有相同問題但不同答案的重複查詢
- 10. 我可以在if-else梯形圖中使用不同的查詢使用相同的ResultSet語句對象嗎?
- 11. 使用Array.map去除具有相同屬性的「重複對象」
- 12. 是否可以使用lucene查詢語法在ElasticSearch中搜索嵌套對象?
- 13. 查詢刪除重複的行,但具有不同的列?
- 14. Powerhell對象有「魔術功能」嗎?
- 15. 不能兩個ListItem對象具有相同的值屬性嗎?
- 16. 具有不同數量屬性的JSON對象可以嗎?
- 17. 使用不同的分析對象ID重複查詢時遇到問題
- 18. Lucene索引 - 單個術語和短語查詢
- 19. Linq查詢連接具有不同數據源的對象?
- 20. 是否有可能使用Solr來查詢多個,lucene和非lucene索引
- 21. 複雜的查詢可能嗎?
- 22. 複雜的子查詢 - 這可能嗎?
- 23. 可以將riak查詢語言應用於RiakCS對象嗎?
- 24. 如何使用MediaStore查詢獲取藝術家不重複?
- 25. 是否有可能有2個不同的NSNumber對象具有相同的值?
- 26. 在同一查詢中進行SQL多重查詢,這有可能嗎?
- 27. 爲不可變對象重用現有對象嗎?
- 28. MySQL查詢重寫沒有子查詢可能嗎?
- 29. Lucene的查詢語法
- 30. Lucene的查詢語法