これは、マルチフィールドクエリを実行する現在のコードです
''# 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)
これをどうやってやるのかよくわかりません。ブールクエリを実行して2番目のフィルターを含めることができるように変更するにはどうすればよいですか?
注:次のようなフィールドで検索できるようにする必要があります
ユーザー:ユーザー名
場所:ドイツ
など
以前に厳密にブールクエリを試しましたが、上記の検索用語を使用できませんでした。どこが間違っていたのかわからない。