java - Apache Lucene createWeight() for wildcard query -
i'm using apache lucene 6.6.0 , i'm trying extract terms search query. current version of code looks this:
query parsedquery = new analyzingqueryparser("", analyzer).parse(query); weight weight = parsedquery.createweight(searcher, false); set<term> terms = new hashset<>(); weight.extractterms(terms); it works pretty fine, noticed doesn't support queries wildcards (i.e. * sign). if query contains wildcard(s), exception:
java.lang.unsupportedoperationexception: query id:123*456 not implement createweight @ org.apache.lucene.search.query.createweight(query.java:66) @ org.apache.lucene.search.indexsearcher.createweight(indexsearcher.java:751) @ org.apache.lucene.search.booleanweight.(booleanweight.java:60) @ org.apache.lucene.search.booleanquery.createweight(booleanquery.java:225)
so there way use createweight() wildcarded queries? or maybe there's way extract search terms query without createweight()?
long story short, necessary rewrite query, example, follows:
final analyzingqueryparser analyzingqueryparser = new analyzingqueryparser("", analyzer); // todo: rewrite method can overridden. // analyzingqueryparser.setmultitermrewritemethod(multitermquery.constant_score_boolean_rewrite); query parsedquery = analyzingqueryparser.parse(query); // here parsedquery instance of org.apache.lucene.search.wildcardquery class. parsedquery = parsedquery.rewrite(reader); // here parsedquery instance of org.apache.lucene.search.multitermqueryconstantscorewrapper class. final weight weight = parsedquery.createweight(searcher, false); final set<term> terms = new hashset<>(); weight.extractterms(terms); please refer thread:
- nabble: lucene - java users - how terms matching wildcardquery in lucene 6.2?
- mail archive: how terms matching wildcardquery in lucene 6.2?
for further details.
it seems mentioned stack overflow question one: how matches wildcard query in lucene 6.2.
Comments
Post a Comment