एक Lucene क्वेरी स्ट्रिंग से फ़ील्ड नाम जाओ

वोट
0

मैं एक Lucene क्वेरी स्ट्रिंग है, तो

field1:value1 myField:aValue

वहाँ Lucene पार्स इस तो मैं अवधि प्रश्नों प्राप्त कर सकते हैं के लिए एक रास्ता है?
मैं अंत में फ़ील्ड नाम और उनके मान वापस मेरे ViewData को पाने के लिए तो मैं वापस पोस्ट पर मेरी बक्सें में उन्हें भर सकते हैं सक्षम होना चाहते हैं।

12/03/2009 को 16:21
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
2

Lucene की QueryParserएक में है कि स्ट्रिंग में परिवर्तित कर देंगे BooleanQueryयुक्त दो TermQueryखंड। आप का उपयोग करना होगा getClausesकी विधि BooleanQueryअवधि प्रश्नों मिलता है।

14/03/2009 को 14:23
का स्रोत उपयोगकर्ता

वोट
1

मैं इसी तरह की आवश्यकता का सामना करना पड़ा है, लेकिन क्वेरी सामान्य हो सकता है। नीचे दी गई विधि (जावा में लागू) के साथ आया था। पूर्ण कोड https://github.com/atulsm/Test_Projects/blob/master/src/TestLuceneQueryStringFields.java

private static Set<String> calculateQueryFieldsRecursively(Query query) throws ParseException{
    Set<String> fields = new HashSet<String>();

    if(query instanceof TermQuery){
        TermQuery tQuery = (TermQuery)query;            
        Term term = tQuery.getTerm();
        fields.add(term.field());
    } else if(query instanceof BooleanQuery){
        BooleanQuery bQuery = (BooleanQuery)query;
        List<BooleanClause> clauses = bQuery.clauses();
        for(BooleanClause clause: clauses){
            Query innerQuery = clause.getQuery();
            Set<String> innerFields = calculateQueryFieldsRecursively(innerQuery);
            if(innerFields == null){
                return null;
            }else{
                fields.addAll(innerFields);
            }
        }
    } else { //TODO support more lucene query types
        return null;
    }   
    return fields;
}
13/12/2016 को 08:48
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more