2012-05-29 37 views
0

對於以下文檔(假設在每個文檔的單個字段):
1 - ABCD
2 - AB
3 - CDABLucene的:匹配字段與一個短語開始

(AD是不同的條款)

我想創建一個查詢「AB」,只匹配文檔1和2.我知道我可以插入一個特殊的「字段開始」令牌來幫助我,但我更喜歡避免(需要重新索引所有數據,並且也有點難看)。

這怎麼能實現?

回答

0

想通了。訣竅是將SpanNearQuerySpanFirstQuery合併。

SpanNearQuery spanNearQuery = new SpanNearQuery(new[] { new SpanTermQuery(new Term(field, "A")), new SpanTermQuery(new Term(field,"B")) },0, true); 
    SpanFirstQuery spanFirstQuery = new SpanFirstQuery(spanNearQuery, 2);