1
A
回答
4
在這裏你去(我使用Java,對不起;)
package stack.lucene;
import junit.framework.TestCase;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.util.Version;
public class StackLucene2 extends TestCase
{
private String sQuery = "field1:playing AND (field2:curse OR field3:something) AND field4:somethingother OR field5:blah";
public void testQueryParser() throws Exception
{
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, null, new StandardAnalyzer(Version.LUCENE_CURRENT));
Query q = parser.parse(this.sQuery);
if(q.getClass() == BooleanQuery.class){
breakQuery_recursive(q, 0);
}
}
// level is for indentation
private void breakQuery_recursive(Query q, int level)
{
BooleanQuery castQuery = (BooleanQuery)q;
for(BooleanClause clause : castQuery.getClauses()){
Class queryclazz = clause.getQuery().getClass();
System.out.println(repeat(' ', level) + "["+queryclazz+"][" + clause.getOccur() + "] " + clause.toString());
if(queryclazz == BooleanQuery.class) {
breakQuery_recursive(clause.getQuery(), level+1);
}
}
}
private String repeat(char c, int times)
{
StringBuffer b = new StringBuffer();
for(int i=0;i < times;i++){
b.append(c);
}
return b.toString();
}
}
輸出:
[class org.apache.lucene.search.TermQuery][+] +field1:playing
[class org.apache.lucene.search.BooleanQuery][+] +field2:curse field3:something
[class org.apache.lucene.search.TermQuery][] field2:curse
[class org.apache.lucene.search.TermQuery][] field3:something
[class org.apache.lucene.search.TermQuery][+] +field4:somethingother
[class org.apache.lucene.search.TermQuery][] field5:blah
相關問題
- 1. 如何基於對象ID做邏輯
- 2. 如何將序言樹解析樹轉換回邏輯句子
- 3. 如何將邏輯與對象連接
- 4. 將對象分解爲其「視圖」和「編輯器」
- 5. 如何將B樹轉換爲B *樹? /最小填充邏輯
- 6. 基於任意邏輯將對象還原爲類別
- 7. 如何將對象分解爲字節[]?
- 8. 類/對象邏輯
- 9. 如何使用邏輯對象
- 10. 如何將樹轉換爲JSON對象?
- 11. 爲什麼python的解釋不會將strig的對象清空爲邏輯False?
- 12. 如何將xml解析爲僅使用linq的對象樹?
- 13. 如何實現基於決策樹的C#代碼/邏輯?
- 14. 如何將遊戲的輸入與其更新邏輯分開?
- 15. 如何從邏輯上使用JAXB對元素進行分組?
- 16. 如何理解usort邏輯?
- 17. 如何獲取DataTemplate的邏輯樹
- 18. 對象重疊邏輯
- 19. Salesforce對象邏輯問題
- 20. 如何將邏輯/數學運算符分配給對象的函數?
- 21. 如何將JavaScript邏輯運算符用於對象屬性?
- 22. 將解析邏輯拆分爲單獨的文件Node.js
- 23. 將類型布爾型轉換爲對象數組,試圖理解邏輯
- 24. 基於邏輯語句對列表對象進行子集化
- 25. 如何「分裂和基團」的對象基於其屬性
- 26. 如何將我的分析樹簡化爲抽象語法樹?
- 27. 如何將其分解爲令牌?
- 28. WPF - 如何在邏輯樹的虛擬分支上設置DataContext?
- 29. 如何獲取包含數據模板對象的邏輯樹項目
- 30. Java:解析NumberFormat對象並將其分配給Number對象