コード例 #1
0
    def testBuildBoostedQuery(self):
        term_query1 = pyquerybuilder.get_term_query('information')
        term_query2 = pyquerybuilder.get_term_query('retrieval')

        boost1 = pyquerybuilder.get_boost_query(term_query1, 2.)
        boost2 = pyquerybuilder.get_boost_query(term_query2, 2.)

        should = pyquerybuilder.JBooleanClauseOccur['should'].value

        boolean_query = pyquerybuilder.get_boolean_query_builder()
        boolean_query.add(boost1, should)
        boolean_query.add(boost2, should)

        bq = boolean_query.build()
        hits1 = self.searcher.search(bq)

        boolean_query2 = pyquerybuilder.get_boolean_query_builder()
        boolean_query2.add(term_query1, should)
        boolean_query2.add(term_query2, should)

        bq2 = boolean_query2.build()
        hits2 = self.searcher.search(bq2)

        for h1, h2 in zip(hits1, hits2):
            self.assertEqual(h1.docid, h2.docid)
            self.assertAlmostEqual(h1.score, h2.score*2, delta=0.001)

        boost3 = pyquerybuilder.get_boost_query(term_query1, 2.)
        boost4 = pyquerybuilder.get_boost_query(term_query2, 3.)

        boolean_query = pyquerybuilder.get_boolean_query_builder()
        boolean_query.add(boost3, should)
        boolean_query.add(boost4, should)

        bq3 = boolean_query.build()
        hits3 = self.searcher.search(bq3)

        for h1, h3 in zip(hits1, hits3):
            self.assertNotEqual(h1.score, h3.score)
コード例 #2
0
    def testTermQuery(self):
        should = pyquerybuilder.JBooleanClauseOccur['should'].value
        query_builder = pyquerybuilder.get_boolean_query_builder()
        query_builder.add(pyquerybuilder.get_term_query('information'), should)
        query_builder.add(pyquerybuilder.get_term_query('retrieval'), should)

        query = query_builder.build()
        hits1 = self.searcher.search(query)
        hits2 = self.searcher.search('information retrieval')

        for h1, h2 in zip(hits1, hits2):
            self.assertEqual(h1.docid, h2.docid)
            self.assertEqual(h1.score, h2.score)
コード例 #3
0
    def testIncompatabilityWithRM3(self):
        should = pyquerybuilder.JBooleanClauseOccur['should'].value
        query_builder = pyquerybuilder.get_boolean_query_builder()
        query_builder.add(pyquerybuilder.get_term_query('information'), should)
        query_builder.add(pyquerybuilder.get_term_query('retrieval'), should)

        query = query_builder.build()
        hits = self.searcher.search(query)
        self.assertEqual(10, len(hits))

        self.searcher.set_rm3()
        self.assertTrue(self.searcher.is_using_rm3())

        with self.assertRaises(NotImplementedError):
            self.searcher.search(query)
コード例 #4
0
    def testTermQuery(self):
        term_query1 = pyquerybuilder.get_term_query('information')
        term_query2 = pyquerybuilder.get_term_query('retrieval')

        should = pyquerybuilder.JBooleanClauseOccur['should'].value

        boolean_query1 = pyquerybuilder.get_boolean_query_builder()
        boolean_query1.add(term_query1, should)
        boolean_query1.add(term_query2, should)

        bq1 = boolean_query1.build()
        hits1 = self.searcher.search(bq1)
        hits2 = self.searcher.search('information retrieval')

        for h1, h2 in zip(hits1, hits2):
            self.assertEqual(h1.docid, h2.docid)
            self.assertEqual(h1.score, h2.score)