Lucene 如何将查询对象分解为其逻辑基本体树?

Lucene 如何将查询对象分解为其逻辑基本体树?,lucene,lucene.net,Lucene,Lucene.net,说-如果我有疑问 content:table AND propertyfield:now 我怎样才能得到其中两项以便以后进行适当的检查?给你(我使用Java,抱歉;) package stack.lucene; 导入junit.framework.TestCase; 导入org.apache.lucene.analysis.standard.StandardAnalyzer; 导入org.apache.lucene.queryParser.queryParser; 导入org.apache.l

说-如果我有疑问

content:table AND propertyfield:now
我怎样才能得到其中两项以便以后进行适当的检查?

给你(我使用Java,抱歉;)

package stack.lucene;
导入junit.framework.TestCase;
导入org.apache.lucene.analysis.standard.StandardAnalyzer;
导入org.apache.lucene.queryParser.queryParser;
导入org.apache.lucene.search.booleansclause;
导入org.apache.lucene.search.BooleanQuery;
导入org.apache.lucene.search.Query;
导入org.apache.lucene.util.Version;
公共类StackLucene2扩展了TestCase
{
私有字符串sQuery=“field1:playing AND(field2:curse或field3:something)和field4:somethingther或field5:blah”;
public void testQueryParser()引发异常
{
QueryParser parser=newQueryParser(Version.LUCENE_CURRENT,null,newStandardAnalyzer(Version.LUCENE_CURRENT));
Query q=parser.parse(this.sQuery);
if(q.getClass()==BooleanQuery.class){
breakQuery_递归(q,0);
}
}
//水平仪用于缩进
私有void breakQuery\u递归(查询q,int级别)
{
BooleanQuery castQuery=(BooleanQuery)q;
for(BooleanClause子句:castQuery.getClaires()){
类queryclazz=子句.getQuery().getClass();
System.out.println(repeat(“”,level)+“[”+querycazz+“][”+子句.getoccurrent()+“]”+子句.toString());
if(querycazz==BooleanQuery.class){
breakQuery_递归(子句.getQuery(),级别+1);
}
}
}
私有字符串重复(字符c,整数倍)
{
StringBuffer b=新的StringBuffer();
for(int i=0;i
输出:

[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
给你(我使用Java,对不起;)

package stack.lucene;
导入junit.framework.TestCase;
导入org.apache.lucene.analysis.standard.StandardAnalyzer;
导入org.apache.lucene.queryParser.queryParser;
导入org.apache.lucene.search.booleansclause;
导入org.apache.lucene.search.BooleanQuery;
导入org.apache.lucene.search.Query;
导入org.apache.lucene.util.Version;
公共类StackLucene2扩展了TestCase
{
私有字符串sQuery=“field1:playing AND(field2:curse或field3:something)和field4:somethingther或field5:blah”;
public void testQueryParser()引发异常
{
QueryParser parser=newQueryParser(Version.LUCENE_CURRENT,null,newStandardAnalyzer(Version.LUCENE_CURRENT));
Query q=parser.parse(this.sQuery);
if(q.getClass()==BooleanQuery.class){
breakQuery_递归(q,0);
}
}
//水平仪用于缩进
私有void breakQuery\u递归(查询q,int级别)
{
BooleanQuery castQuery=(BooleanQuery)q;
for(BooleanClause子句:castQuery.getClaires()){
类queryclazz=子句.getQuery().getClass();
System.out.println(repeat(“”,level)+“[”+querycazz+“][”+子句.getoccurrent()+“]”+子句.toString());
if(querycazz==BooleanQuery.class){
breakQuery_递归(子句.getQuery(),级别+1);
}
}
}
私有字符串重复(字符c,整数倍)
{
StringBuffer b=新的StringBuffer();
for(int i=0;i
输出:

[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