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. 如何將B樹轉換爲B *樹? /最小填充邏輯
- 3. 如何將對象分解爲字節[]?
- 4. 如何將樹轉換爲JSON對象?
- 5. 爲什麼python的解釋不會將strig的對象清空爲邏輯False?
- 6. 如何實現基於決策樹的C#代碼/邏輯?
- 7. 將對象轉換爲基元int
- 8. 如何獲取DataTemplate的邏輯樹
- 9. Salesforce對象邏輯問題
- 10. 如何將邏輯/數學運算符分配給對象的函數?
- 11. 將解析邏輯拆分爲單獨的文件Node.js
- 12. 將類型布爾型轉換爲對象數組,試圖理解邏輯
- 13. 基於邏輯語句對列表對象進行子集化
- 14. 如何將其分解爲令牌?
- 15. WPF - 如何在邏輯樹的虛擬分支上設置DataContext?
- 16. 如何將其分解爲單元測試?
- 17. 如果語句邏輯 - 對象數組
- 18. 如何將基礎對象分配給派生對象
- 19. 如何將片段邏輯拆分爲MainActivity.java
- 20. VB.NET如何將其解析爲對象屬性?
- 21. 瞭解邏輯
- 22. 任何將表分成2的邏輯?
- 23. 在django-query中實現邏輯分析器
- 24. 可視樹和邏輯樹的概念
- 25. 將編輯的樹保存爲原始格式的json對象
- 26. SQL如何篩選基於邏輯JOIN
- 27. 基本Ruby邏輯 - 返回對或錯
- 28. 基於邏輯對行進行編號
- 29. 如何分離模型(業務邏輯和商店邏輯)?
- 30. javascript將分層樹分解爲所有子樹,並按其級別分組每個子樹的節點