我正在使用Apache Lucene 6.6.0,並試圖從搜索查詢中提取條件。代碼的當前版本是這樣的:用於通配符查詢的Apache Lucene createWeight()
Query parsedQuery = new AnalyzingQueryParser("", analyzer).parse(query);
Weight weight = parsedQuery.createWeight(searcher, false);
Set<Term> terms = new HashSet<>();
weight.extractTerms(terms);
它的工作原理非常精細,但最近我注意到,它不支持使用通配符(即*
符號)查詢。如果查詢包含通配符(S),然後我得到一個異常:
java.lang.UnsupportedOperationException:查詢 ID:123 * 456根本不 org.apache.lucene.search.Query實施createWeight。 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)
那麼有沒有辦法使用帶有通配查詢的createWeight()
?或者,還有另一種方法可以從查詢中提取搜索字詞而不需要createWeight()
?
嗯,它看起來像某種黑魔法,但它確實有效。謝謝! –
@DmytroTitov,很高興它已經幫助!同意你的看法:這不是直截了當的。 –