2013-07-15 33 views
0

我有一個自定義的「詞組查詢解析器」,由一些不可用的第三方發佈。 解析器將幾種查詢類型重寫爲SpanQueries(每種類型以不同的方式)。 問題是它是爲Lucene v3編寫的,現在我正在將我的搜索遷移到L. v4,並且該解析器開始獲取另一個類型來重寫(ConstantScoreQuery),這是以前不期望的,現在它不由此解析器處理。Lucene查詢分析器:將ConstantScoreQuery轉換爲SpanQuery

有人可以幫我解釋一下如何將ConstantScoreQuery轉換成SpanQuery類型之一?

最好的問候, 彼得

回答

0

ConstantScoreQuery是一個包裝。它很可能仍在生成SpanQuery(或其他任何類型的查詢),然後用ConstantScoreQuery進行包裝。我會看看如果ConstantScoreQuery.getQuery()返回您可以使用的東西。

+0

感謝您的提示 - 我發現它實際上包裝了一個過濾器,而不是查詢。接下來的事情是如何處理這個過濾器?我可以簡單地忽略整個包裝查詢,或者過濾器應該進一步處理? – Piotr

+0

沒有關於你如何使用它的更多細節,很難說肯定,但我會說你可能無法安全地忽略它。您可以嘗試保存它,並在對其餘部分進行最終查詢後,將它傳遞給您的「搜索」調用(即,如果您正在使用'search(int,Query)',則可以使用該調用來添加它'search(int,Query,Filter)')。 – femtoRgon