Это мой текущий код, который выполняет MultiField Query
''# Variables used by Lucene
Dim reader As IndexReader = IndexReader.Open(luceneDirectory, True)
Dim searcher As IndexSearcher = New IndexSearcher(reader)
Dim parser As QueryParser = New MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29,
New String() {"title",
"description",
"region",
"pricelow",
"pricehigh",
"url",
"user",
"location"},
New StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29))
Dim query As Query = parser.Parse(search.ToLower)
''# We want to ensure that only relevant dates are being returned.
Dim nowValue = DateTools.DateToString(DateTime.Now, DateTools.Resolution.DAY)
Dim dateFilter = If(searchPast, Nothing, FieldCacheRangeFilter.NewStringRange("filterdate",
lowerVal:=nowValue,
includeLower:=True,
upperVal:=Nothing,
includeUpper:=False))
''#============================================================================
''# Here's where I also need to add a regionFilter where I have something like
''# Dim regionFilter = New FieldCacheTermsFilter("region", New String() {HttpContext.Current.Request.Url.Subdomain})
''# This is because we must always ONLY ever return search results that are from
''# HttpContext.Current.Request.Url.Subdomain (where Subdomain is an extension
''# method that returns the name of the region... much like Kijiji.ca)
''#============================================================================
Dim topDocs As TopDocs = searcher.Search(query, dateFilter, 1000)
Я просто не знаю, как это сделать.Как я могу изменить это так, чтобы я мог выполнить логический запрос и включить второй фильтр?
Примечание: Мне все еще нужно иметь возможность поиска в таких полях, как
user:имя пользователя
местоположение: германия
и т. д.
Ранее я пытался выполнить строго булевский запрос и не мог использовать приведенные выше условия поиска.Не уверен, где я ошибся.