0
我有一個lucene搜索,我試圖用LanguageIds過濾搜索,但我無法做到這一點。我傳遞的是我的語言類似「1,2,3」,但它沒有正確過濾,它唯一的取值爲languageIds「1,2,3」。但我希望結果具有「1」,「1,2」,「1,3」,「1,2,3」的languageIds。任何機構可以告訴我如何在Lucene.net中爲單個termQuery傳遞多個值?如何用2個值過濾Lucene搜索字段?
笏到目前爲止,我所做的就是
if (languagelds.Contains(","))
{
List<String> languageld = languagelds.Trim().Split(',').ToList();
languageld.ForEach(lid =>
{
TermQuery languageQuery = new TermQuery(new Term("resourceLanguageIds", lid));
filterQuery.Add(languageQuery, BooleanClause.Occur.MUST);
});
}
else
{
TermQuery languageQuery = new TermQuery(new Term("resourceLanguageIds", languagelds));
filterQuery.Add(languageQuery, BooleanClause.Occur.MUST);
}
filterQuery.Add(productQuery, BooleanClause.Occur.MUST);
Filter filter = new CachingWrapperFilter(new QueryWrapperFilter(filterQuery));
TopScoreDocCollector collector = TopScoreDocCollector.create(100, true);
Hits hits = null;
if (sortField != "Rank")
{
hits = indexSearch.Search(searchQuery, filter, sort);
indexSearch.SetDefaultFieldSortScoring(true, true);
}
else
{
hits = indexSearch.Search(searchQuery, filter);
}
是否有其他方法從搜索方面來篩選未做任何索引的變化? – 2011-06-09 08:54:01
嘗試搜索「1」和「1,*」,具體取決於您存儲該字段的方式。這不是最好的解決方案,你應該遵循Anon的建議 – KinSlayerUY 2013-04-15 13:34:33