Skip to content

Commit 808b8b3

Browse files
committed
Merge pull request #7 from rdavanzo/master
Master
2 parents 97388c3 + 866fc5e commit 808b8b3

File tree

6 files changed

+197
-102
lines changed

6 files changed

+197
-102
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*.sbr
2222
*.scc
2323
*.tokens
24+
*.csdat
2425
[Bb]in
2526
[Db]ebug*/
2627
obj/

.hgignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ syntax: glob
2323
*.lib
2424
*.sbr
2525
*.scc
26+
*.csdat
2627
[Bb]in
2728
[Db]ebug*/
2829
obj/
Lines changed: 172 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
using System;
2-
using System.Collections;
1+
using Lucene.Net.Analysis.Standard;
32
using Lucene.Net.Index;
3+
using Lucene.Net.QueryParsers;
44
using Lucene.Net.Search;
55
using NUnit.Framework;
6+
using System;
7+
using System.Collections;
8+
using System.Linq;
9+
using Version = Lucene.Net.Util.Version;
610

711
namespace NHibernate.Search.Tests.Filter
812
{
@@ -23,105 +27,184 @@ protected override IList Mappings
2327
[Test]
2428
public void ParameterizedFilter()
2529
{
26-
CreateData();
27-
IFullTextSession s = Search.CreateFullTextSession(OpenSession());
28-
s.Transaction.Begin();
29-
BooleanQuery query = new BooleanQuery();
30-
query.Add(new TermQuery(new Term("teacher", "andre")), BooleanClause.Occur.SHOULD);
31-
query.Add(new TermQuery(new Term("teacher", "max")), BooleanClause.Occur.SHOULD);
32-
query.Add(new TermQuery(new Term("teacher", "aaron")), BooleanClause.Occur.SHOULD);
30+
try
31+
{
32+
CreateData();
33+
IFullTextSession s = Search.CreateFullTextSession(OpenSession());
34+
s.Transaction.Begin();
35+
BooleanQuery query = new BooleanQuery();
36+
query.Add(new TermQuery(new Term("teacher", "andre")), BooleanClause.Occur.SHOULD);
37+
query.Add(new TermQuery(new Term("teacher", "max")), BooleanClause.Occur.SHOULD);
38+
query.Add(new TermQuery(new Term("teacher", "aaron")), BooleanClause.Occur.SHOULD);
3339

34-
IFullTextQuery ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
35-
ftQuery.EnableFullTextFilter("security").SetParameter("Login", "andre");
36-
Assert.AreEqual(1, ftQuery.ResultSize, "Should filter to limit to Emmanuel");
40+
IFullTextQuery ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
41+
ftQuery.EnableFullTextFilter("security").SetParameter("Login", "andre");
42+
Assert.AreEqual(1, ftQuery.ResultSize, "Should filter to limit to Emmanuel");
3743

38-
s.Transaction.Commit();
39-
s.Close();
40-
DeleteData();
44+
s.Transaction.Commit();
45+
s.Close();
46+
}
47+
finally
48+
{
49+
DeleteData();
50+
}
4151
}
4252

4353
[Test]
54+
public void ParameterizedFilterWithSearchQuery()
55+
{
56+
try
57+
{
58+
const string n = "NoMatch";
59+
const string y = "Match";
60+
61+
using (var session = OpenSession())
62+
{
63+
session.Transaction.Begin();
64+
65+
var deliveryDate = new DateTime(2000, 1, 1);
66+
saveNewDriver(session, 1, n, n, deliveryDate, -1);
67+
saveNewDriver(session, 2, y, y, deliveryDate, -1);
68+
saveNewDriver(session, 3, y, y, deliveryDate, -1);
69+
saveNewDriver(session, 4, n, n, deliveryDate, -1);
70+
saveNewDriver(session, 5, y, y, deliveryDate, -1);
71+
saveNewDriver(session, 6, n, y, deliveryDate, -1);
72+
saveNewDriver(session, 7, n, n, deliveryDate, -1);
73+
saveNewDriver(session, 8, y, n, deliveryDate, -1);
74+
saveNewDriver(session, 9, y, y, deliveryDate, -1);
75+
saveNewDriver(session, 10, n, n, deliveryDate, -1);
76+
saveNewDriver(session, 11, y, y, deliveryDate, -1);
77+
saveNewDriver(session, 12, n, n, deliveryDate, -1);
78+
saveNewDriver(session, 13, n, n, deliveryDate, -1);
79+
saveNewDriver(session, 14, n, y, deliveryDate, -1);
80+
saveNewDriver(session, 15, y, n, deliveryDate, -1);
81+
session.Transaction.Commit();
82+
}
83+
84+
using (var session = OpenSession())
85+
using (var ftSession = Search.CreateFullTextSession(session))
86+
{
87+
var parser = new QueryParser(Version.LUCENE_29, "name", new StandardAnalyzer(Version.LUCENE_29));
88+
var query = parser.Parse("name:" + y);
89+
var ftQuery = ftSession.CreateFullTextQuery(query, typeof (Driver));
90+
ftQuery.EnableFullTextFilter("security").SetParameter("Login", y);
91+
var results = ftQuery.List();
92+
93+
var expectedIds = new[] {2, 3, 5, 9, 11};
94+
var actualIds = results.Cast<Driver>().OrderBy(x => x.Id).Select(x => x.Id);
95+
Assert.AreEqual(expectedIds, actualIds, "The query should return only drivers where name AND teacher match.");
96+
}
97+
}
98+
finally
99+
{
100+
DeleteData();
101+
}
102+
}
103+
104+
[Test]
105+
[Ignore("Need to implement BestDriversFilter")]
44106
public void CombinedFilters()
45107
{
46-
CreateData();
47-
IFullTextSession s = Search.CreateFullTextSession(OpenSession());
48-
s.Transaction.Begin();
49-
BooleanQuery query = new BooleanQuery();
50-
query.Add(new TermQuery(new Term("teacher", "andre")), BooleanClause.Occur.SHOULD);
51-
query.Add(new TermQuery(new Term("teacher", "max")), BooleanClause.Occur.SHOULD);
52-
query.Add(new TermQuery(new Term("teacher", "aaron")), BooleanClause.Occur.SHOULD);
53-
54-
IFullTextQuery ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
55-
ftQuery.EnableFullTextFilter("bestDriver");
56-
ftQuery.EnableFullTextFilter("security").SetParameter("Login", "andre");
57-
Assert.AreEqual(1, ftQuery.ResultSize, "Should filter to limit to Emmanuel");
58-
59-
ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
60-
ftQuery.EnableFullTextFilter("bestDriver");
61-
ftQuery.EnableFullTextFilter("security").SetParameter("login", "andre");
62-
ftQuery.DisableFullTextFilter("security");
63-
ftQuery.DisableFullTextFilter("bestDriver");
64-
Assert.AreEqual(3, ftQuery.ResultSize, "Should not filter anymore");
108+
try
109+
{
110+
CreateData();
111+
IFullTextSession s = Search.CreateFullTextSession(OpenSession());
112+
s.Transaction.Begin();
113+
BooleanQuery query = new BooleanQuery();
114+
query.Add(new TermQuery(new Term("teacher", "andre")), BooleanClause.Occur.SHOULD);
115+
query.Add(new TermQuery(new Term("teacher", "max")), BooleanClause.Occur.SHOULD);
116+
query.Add(new TermQuery(new Term("teacher", "aaron")), BooleanClause.Occur.SHOULD);
65117

66-
s.Transaction.Commit();
67-
s.Close();
68-
DeleteData();
118+
IFullTextQuery ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
119+
ftQuery.EnableFullTextFilter("bestDriver");
120+
ftQuery.EnableFullTextFilter("security").SetParameter("Login", "andre");
121+
Assert.AreEqual(1, ftQuery.ResultSize, "Should filter to limit to Emmanuel");
122+
123+
ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
124+
ftQuery.EnableFullTextFilter("bestDriver");
125+
ftQuery.EnableFullTextFilter("security").SetParameter("login", "andre");
126+
ftQuery.DisableFullTextFilter("security");
127+
ftQuery.DisableFullTextFilter("bestDriver");
128+
Assert.AreEqual(3, ftQuery.ResultSize, "Should not filter anymore");
129+
130+
s.Transaction.Commit();
131+
s.Close();
132+
}
133+
finally
134+
{
135+
DeleteData();
136+
}
69137
}
70138

71139
[Test]
140+
[Ignore("Need to implement ExcludeAllFilter")]
72141
public void Cache()
73142
{
74-
CreateData();
75-
IFullTextSession s = Search.CreateFullTextSession(OpenSession());
76-
s.Transaction.Begin();
77-
BooleanQuery query = new BooleanQuery();
78-
query.Add(new TermQuery(new Term("teacher", "andre")), BooleanClause.Occur.SHOULD);
79-
query.Add(new TermQuery(new Term("teacher", "max")), BooleanClause.Occur.SHOULD);
80-
query.Add(new TermQuery(new Term("teacher", "aaron")), BooleanClause.Occur.SHOULD);
143+
try
144+
{
145+
CreateData();
146+
IFullTextSession s = Search.CreateFullTextSession(OpenSession());
147+
s.Transaction.Begin();
148+
BooleanQuery query = new BooleanQuery();
149+
query.Add(new TermQuery(new Term("teacher", "andre")), BooleanClause.Occur.SHOULD);
150+
query.Add(new TermQuery(new Term("teacher", "max")), BooleanClause.Occur.SHOULD);
151+
query.Add(new TermQuery(new Term("teacher", "aaron")), BooleanClause.Occur.SHOULD);
81152

82-
IFullTextQuery ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
83-
Assert.AreEqual(3, ftQuery.ResultSize, "No filter should happen");
153+
IFullTextQuery ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
154+
Assert.AreEqual(3, ftQuery.ResultSize, "No filter should happen");
84155

85-
ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
86-
ftQuery.EnableFullTextFilter("cachetest");
87-
Assert.AreEqual(0, ftQuery.ResultSize, "Should filter out all");
156+
ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
157+
ftQuery.EnableFullTextFilter("cachetest");
158+
Assert.AreEqual(0, ftQuery.ResultSize, "Should filter out all");
159+
160+
ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
161+
ftQuery.EnableFullTextFilter("cachetest");
162+
try
163+
{
164+
int i = ftQuery.ResultSize;
165+
}
166+
catch (NotSupportedException)
167+
{
168+
Assert.Fail("Cache does not work");
169+
}
170+
171+
s.Transaction.Commit();
172+
s.Close();
88173

89-
ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
90-
ftQuery.EnableFullTextFilter("cachetest");
91-
try
92-
{
93-
int i = ftQuery.ResultSize;
94174
}
95-
catch (NotSupportedException)
175+
finally
96176
{
97-
Assert.Fail("Cache does not work");
177+
DeleteData();
98178
}
99-
100-
s.Transaction.Commit();
101-
s.Close();
102-
DeleteData();
103179
}
104180

105181
[Test]
182+
[Ignore("Need to implement BestDriversFilter")]
106183
public void StraightFilters()
107184
{
108-
CreateData();
109-
IFullTextSession s = Search.CreateFullTextSession(OpenSession());
110-
s.Transaction.Begin();
111-
BooleanQuery query = new BooleanQuery();
112-
query.Add(new TermQuery(new Term("teacher", "andre")), BooleanClause.Occur.SHOULD);
113-
query.Add(new TermQuery(new Term("teacher", "max")), BooleanClause.Occur.SHOULD);
114-
query.Add(new TermQuery(new Term("teacher", "aaron")), BooleanClause.Occur.SHOULD);
185+
try
186+
{
187+
CreateData();
188+
IFullTextSession s = Search.CreateFullTextSession(OpenSession());
189+
s.Transaction.Begin();
190+
BooleanQuery query = new BooleanQuery();
191+
query.Add(new TermQuery(new Term("teacher", "andre")), BooleanClause.Occur.SHOULD);
192+
query.Add(new TermQuery(new Term("teacher", "max")), BooleanClause.Occur.SHOULD);
193+
query.Add(new TermQuery(new Term("teacher", "aaron")), BooleanClause.Occur.SHOULD);
115194

116-
IFullTextQuery ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
117-
ftQuery.EnableFullTextFilter("bestDriver");
118-
Lucene.Net.Search.Filter dateFilter = new RangeFilter("delivery", "2001", "2005", true, true);
119-
ftQuery.SetFilter(dateFilter);
120-
Assert.AreEqual(1, ftQuery.ResultSize, "Should select only liz");
195+
IFullTextQuery ftQuery = s.CreateFullTextQuery(query, typeof(Driver));
196+
ftQuery.EnableFullTextFilter("bestDriver");
197+
Lucene.Net.Search.Filter dateFilter = new RangeFilter("delivery", "2001", "2005", true, true);
198+
ftQuery.SetFilter(dateFilter);
199+
Assert.AreEqual(1, ftQuery.ResultSize, "Should select only liz");
121200

122-
s.Transaction.Commit();
123-
s.Close();
124-
DeleteData();
201+
s.Transaction.Commit();
202+
s.Close();
203+
}
204+
finally
205+
{
206+
DeleteData();
207+
}
125208
}
126209

127210
#endregion
@@ -168,6 +251,20 @@ private void CreateData()
168251
s.Transaction.Commit();
169252
s.Close();
170253
}
254+
255+
private static void saveNewDriver(ISession session, int id, string name, string teacher, DateTime delivery, int score)
256+
{
257+
var driver = new Driver
258+
{
259+
Id = id,
260+
Name = name,
261+
Teacher = teacher,
262+
Delivery = delivery,
263+
Score = score
264+
};
265+
session.Save(driver);
266+
}
267+
171268
#endregion
172269
}
173270
}

src/NHibernate.Search/AssemblyInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
[assembly : AssemblyCompanyAttribute("NHibernate.org")]
1818
[assembly : AssemblyProductAttribute("NHibernate.Search")]
1919
[assembly : AssemblyCopyrightAttribute("Licensed under LGPL.")]
20-
[assembly : AssemblyVersionAttribute("2.0.2.4000")]
21-
[assembly : AssemblyInformationalVersionAttribute("2.0.2.4000")]
22-
[assembly: AssemblyFileVersionAttribute("2.0.2.4000")]
20+
[assembly : AssemblyVersionAttribute("2.0.3.4000")]
21+
[assembly : AssemblyInformationalVersionAttribute("2.0.3.4000")]
22+
[assembly: AssemblyFileVersionAttribute("2.0.3.4000")]
2323
//[assembly : AssemblyKeyFileAttribute("../../src/NHibernate.snk")]
2424
[assembly : AssemblyDelaySignAttribute(false)]

0 commit comments

Comments
 (0)