2012-09-09 39 views
2

我在個人項目中使用Lucene.Net,需要處理的情況下,但無法找到一個很好的方式,lucene將處理使用相同類型的查詢兩種情況。Lucene空查詢字符串與篩選器

基本查詢使用帶有StandardAnalyzer的MultiFieldQueryParser和按日期進行過濾的NumericRangedFilter(將日期保存爲長整型值)。

問題是我希望過濾器處理空的搜索字符串,而不必使用兩個不同的查詢解析器,一個用於空搜索字符串,另一個用戶輸入搜索字符串。目前MultiFieldQueryParser在使用空字符串時拋出一個ParseException。

有關處理此問題的最佳方法的任何建議?或者這是Lucene或Lucene.Net中的一個缺陷(故意或其他)。

結果

我結束了使用MatchAllDocsQuery如果查詢字符串是空的,否則正常的查詢。

另外,我不得不刪除NumericFields和NumericRangeFilter的使用,因爲查詢在我使用它們時沒有返回任何結果。我結束了使用字符串和一個正常的RangeFilter做舊的日期範圍過濾器。

回答