PyLucene 3.4.0-1 import
[pylucene.git] / samples / LuceneInAction / lia / advsearching / MultiFieldQueryParserTest.py
1 # ====================================================================
2 #   Licensed under the Apache License, Version 2.0 (the "License");
3 #   you may not use this file except in compliance with the License.
4 #   You may obtain a copy of the License at
5 #
6 #       http://www.apache.org/licenses/LICENSE-2.0
7 #
8 #   Unless required by applicable law or agreed to in writing, software
9 #   distributed under the License is distributed on an "AS IS" BASIS,
10 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 #   See the License for the specific language governing permissions and
12 #   limitations under the License.
13 # ====================================================================
14
15 from lia.common.LiaTestCase import LiaTestCase
16
17 from lucene import \
18     SimpleAnalyzer, MultiFieldQueryParser, IndexSearcher, BooleanClause, \
19     Version
20
21
22 class MultiFieldQueryParserTest(LiaTestCase):
23
24     def testDefaultOperator(self):
25
26         SHOULD = BooleanClause.Occur.SHOULD
27         query = MultiFieldQueryParser.parse(Version.LUCENE_CURRENT,
28                                             "development", ["title", "subject"],
29                                             [SHOULD, SHOULD],
30                                             SimpleAnalyzer())
31
32         searcher = IndexSearcher(self.directory, True)
33         scoreDocs = searcher.search(query, 50).scoreDocs
34
35         self.assertHitsIncludeTitle(searcher, scoreDocs,
36                                     "Java Development with Ant")
37
38         # has "development" in the subject field
39         self.assertHitsIncludeTitle(searcher, scoreDocs,
40                                     "Extreme Programming Explained")
41
42     def testSpecifiedOperator(self):
43         
44         MUST = BooleanClause.Occur.MUST
45         query = MultiFieldQueryParser.parse(Version.LUCENE_CURRENT,
46                                             "development", ["title", "subject"],
47                                             [MUST, MUST],
48                                             SimpleAnalyzer())
49
50         searcher = IndexSearcher(self.directory, True)
51         scoreDocs = searcher.search(query, 50).scoreDocs
52
53         self.assertHitsIncludeTitle(searcher, scoreDocs,
54                                     "Java Development with Ant")
55         self.assertEqual(1, len(scoreDocs), "one and only one")