Lucene 4.0.0 の時間範囲の検索/フィルターに関連する問題があります。いくつかのツイートをインデックス化したので、特定の時間範囲で特定のユーザーによって送信されたツイートを収集したいと考えています。作成したフィルターを使用して関連クエリを実行すると、指定した時間範囲外のツイートが取得されます。たとえば、以下の例では、timeStamp が lowerBound よりも小さいため、「exp ツイート」があるとは予想していませんでした。
このタスクを実行する方法、またはコードの問題点について何か提案をいただけますか?
よろしく
関連コード
// time range, format "yyyyMMddHHmmss"
String upperBoundStr = 20110126024422;
String lowerBoundStr = 20110126021422;
String tweetTimeStr = 20110126022922;
//create filter
Filter lowerFilter = new QueryWrapperFilter( TermRangeQuery.newStringRange("creationTime",lowerBoundStr,tweetTimeStr,true,false));
Filter upperFilter = new QueryWrapperFilter( TermRangeQuery.newStringRange("creationTime",tweetTimeStr,upperBoundStr,false,true));
Filter[] filters = new Filter[2];
filters[0] = lowerFilter;
filters[1] = upperFilter;
Filter chainFilter = new ChainedFilter(filters, ChainedFilter.OR);
// search
Query luceneQuery = new TermQuery(new Term("username", "userName1"));
SimpleFSDirectory index = new SimpleFSDirectory(new File("lucene_index"));
IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
ScoreDoc[] hits = searchFilteredQuery(luceneQuery, searcher,chainFilter,maxNumberOfNewTweets);
List<RankResult> filteredtweets = convertHitsToRankResults(hits, searcher);
出力例 (形式: date dateIn("yyyyMMddHHmmss") userName)
base tweet: Wed Jan 26 02:29:22 VET 2011 20110126022922 userName1
exp tweet: Tue Jan 25 20:05:02 VET 2011 20110125200502 userName1