如果需要的話,你可以重寫擴展QueryParser的子類。我能夠與AnalyzingQueryParser使用StopAnalyzer沒有問題:
Analyzer analyzer1 = new StopAnalyzer(Version.LUCENE_30, ImmutableSet.of("foo", "bar", "blop"));
QueryParser qp = new AnalyzingQueryParser(Version.LUCENE_30, "field", analyzer1);
Query q = qp.parse("foobar foo bar blop hello");
System.out.println("query " + q);
q = qp.parse("foobar~ foo~ bar~ hell~");
System.out.println("query " + q);
創建查詢:字段:foobar的領域:你好和欄:foobar的〜0.5地獄〜0.5。這是lucene 3.0.3,所以我不確定這是否適用於你的問題。無論如何,我偶然發現這一點,並希望它可以幫助。
@Override
protected Query getFuzzyQuery(String field, String termStr, float minSimilarity) throws ParseException {
return super.getFuzzyQuery(field, termStr, minSimilarity);
}
@Override
protected Query getWildcardQuery(String field, String termStr) throws ParseException {
return super.getWildcardQuery(field, termStr);
}
如果任何人有對此問題的不同意見,那麼請這樣說:如果他們添加通配符查詢,在這種情況下,你可能想要覆蓋的方法,你可能會遇到與詞幹的問題。 – 2010-05-17 20:30:28
我還沒有用過lucene一段時間,但我記得你需要使用相同的分析器來進行索引和搜索。這可能是問題嗎?請提供 – Dzhu 2011-07-27 12:33:56
更多信息。你是如何得出這樣的結論:事情並不奏效/有效? – 2012-01-10 13:21:42