Lucene.Net 使用 IN 搜尋

摘要:Lucene.Net 使用 IN 搜尋

若要建立 IN 搜尋 , 例如 SQL 的 sample 如下 :

 

select * from product where product_Id in (1,2,3,4) 

 

Lucene.Net 若想做到 IN 搜尋 , 有兩種方式 

 

第一種方式 : 使用 BooleanQuery

BooleanQuery query = new BooleanQuery();
query.Add(new TermQuery(new Term("product_Id", "1"), Occur.SHOULD));
query.Add(new TermQuery(new Term("product_Id"", "2"), Occur.SHOULD));
query.Add(new TermQuery(new Term("product_Id"", "3"), Occur.SHOULD));
query.Add(new TermQuery(new Term("product_Id"", "4"), Occur.SHOULD));

 

第二種方式 : 

        Query parser = new QueryParser(Version.LUCENE_30, "product_Id", new StandardAnalyzer(Version.LUCENE_30)).Parse("1 2 3 4");

 

第一種方式有個缺點是 BooleanQuery 預設值是 1024 , 若要調整上限可使用下列 Code

 

BooleanQuery.MaxClauseCount = value