Я пытаюсь искать в своих записях, ища даты, превышающие указанную дату.Я могу сделать это для дат, равных, меньше и между, но больше, чем всегда возвращать пустое.Вот как я индексирую:
Dim doc = New Document()
If sampleData.Start_Date IsNot Nothing Then
Dim startDate As Integer = DateTools.DateToString(sampleData.Start_Date, DateTools.Resolution.DAY)
doc.Add(New Field("Start_Date", startDate, Field.Store.YES, Field.Index.ANALYZED))
End If
writer.AddDocument(doc)
Затем я выполняю поиск следующим образом:
Dim LuceneSearch As New LuceneSearchEngine
Dim LuceneData As List(Of LuceneSearchData)
Dim SearchString = "{(Start_Date : {20180606 TO *} ) AND (DataType:Mechanism)}"
LuceneData = LuceneSearch.search_query(SearchString)
Public Function search_query(ByVal search_query_string As String) As IEnumerable(Of LuceneSearchData)
Using searcher = New IndexSearcher(_directory, False)
Dim hits_limit = 1000
Dim analyzer = New StandardAnalyzer(Version.LUCENE_30)
Dim StandardAnalyzer As StandardAnalyzer = New StandardAnalyzer(Version.LUCENE_30)
Dim QueryParser As QueryParser = New QueryParser(Version.LUCENE_30, search_query_string, StandardAnalyzer)
Dim Query As Query = QueryParser.Parse(search_query_string)
Dim hits = searcher.Search(Query, Nothing, hits_limit, Sort.RELEVANCE).ScoreDocs
Dim results = _mapLuceneToDataList(hits, searcher)
analyzer.Close()
searcher.Dispose()
Return results
End Using
End Function
Это всегда будет пустым.Но использование строки запроса, как это работает:
Dim SearchString = "{(Start_Date : {* TO 20180606} ) AND (DataType:Mechanism)}"
Dim SearchString = "{(Start_Date : [20170606 TO 20180606] ) AND (DataType:Mechanism)}"
Может кто-то указать, что я делаю неправильно?