我用下面的語句來索引日期:範圍查詢使用Lucene 2.9.x - 在索引中的日期不工作
luceneDoc.add(new NumericField(key).setLongValue(date.getTime()));
我也用語句如下添加文本屬性:
luceneDoc.add(new Field(key, value, Field.Store.YES, Field.Index.ANALYZED));
然後我執行文本屬性查詢:
author:hans
這完美的作品。但是當我執行範圍查詢時,沒有任何回覆:
my-date-property:[20100101 TO 20110101]
我在這裏丟失了什麼?
我看了一下Luke的索引,我看到了文檔
的所有文本屬性,但日期屬性只出現在總覽頁面中......也許這是正常的
。 其實我如果我添加像這樣看日期屬性:
NumericField field = new NumericField(key, Field.Store.YES, true);
field.setLongValue(date.getTime());
luceneDoc.add(field);
但是:查詢仍然無法正常工作!也許它只適用於使用查詢生成器的Java?我還沒有嘗試過。但是,如果文本查詢也可以工作,那將會很棒。任何想法???
謝謝,我會試試這個...所以你也說標準查詢解析器支持範圍查詢,對吧?因爲['Moleski'](http://stackoverflow.com/questions/5835232/range-query-with-lucene-2-9-x-dates-in-index-are-not-working/5844872#5844872)說不同的東西... – basZero 2011-05-01 08:46:52
只是一個問題:通過添加一個'Field'而不是'NumericField'我假設它被存儲爲索引中的TEXT屬性。目前我在索引中(通過Luke)看到我的日期值爲DATE。如果它存儲爲TEXT,我猜你不能通過API進行範圍查詢,對吧?如果是這樣,它也不是我想要的... – basZero 2011-05-01 10:31:58
是的,你可以對字符串進行範圍查詢,參見http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Range%20Searches。 – 2011-05-02 08:01:26