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:

for further details.

it seems mentioned stack overflow question one: how matches wildcard query in lucene 6.2.


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -