Skip to content

Commit 74dc10d

Browse files
committed
Integrated IStreamConfiguration into QueryParser.
1 parent c0a2f49 commit 74dc10d

File tree

10 files changed

+57
-14
lines changed

10 files changed

+57
-14
lines changed

examples/QueryParser/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@ COMBINE_FILE_LISTS()
2323

2424

2525
add_executable(QueryParser ${CPPFILES} ${PRIVATE_HFILES} ${PUBLIC_HFILES})
26-
target_link_libraries(QueryParser Utilities Plan)
26+
target_link_libraries(QueryParser Utilities Configuration Plan)
2727
set_property(TARGET QueryParser PROPERTY FOLDER "examples")
2828
set_property(TARGET QueryParser PROPERTY PROJECT_LABEL "QueryParser")

examples/QueryParser/main.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
#include <iostream>
2424

25+
#include "BitFunnel/Configuration/Factories.h"
26+
#include "BitFunnel/Configuration/IStreamConfiguration.h"
2527
#include "BitFunnel/Exceptions.h"
2628
#include "BitFunnel/Plan/QueryPipeline.h"
2729
#include "BitFunnel/Plan/TermMatchNode.h"
@@ -61,7 +63,13 @@ namespace BitFunnel
6163

6264
std::cout << welcome;
6365

64-
QueryPipeline pipeline;
66+
// Configure parser for three named streams.
67+
auto streamConfiguration = Factories::CreateStreamConfiguration();
68+
streamConfiguration->AddMapping("body", { 0 });
69+
streamConfiguration->AddMapping("title", { 123 });
70+
streamConfiguration->AddMapping("anchors", { 10 });
71+
72+
QueryPipeline pipeline(*streamConfiguration);
6573

6674
for (;;)
6775
{

inc/BitFunnel/Configuration/Factories.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ namespace BitFunnel
3434

3535
class IFileManager;
3636
class IShardDefinition;
37+
class IStreamConfiguration;
3738

3839
namespace Factories
3940
{
@@ -45,5 +46,8 @@ namespace BitFunnel
4546

4647
std::unique_ptr<IShardDefinition> CreateShardDefinition();
4748
std::unique_ptr<IShardDefinition> CreateShardDefinition(std::istream& input);
49+
50+
std::unique_ptr<IStreamConfiguration> CreateStreamConfiguration();
51+
std::unique_ptr<IStreamConfiguration> CreateStreamConfiguration(std::istream& input);
4852
}
4953
}

inc/BitFunnel/Plan/QueryPipeline.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,18 @@
2929

3030
namespace BitFunnel
3131
{
32+
class IStreamConfiguration;
3233
class TermMatchNode;
3334

3435
class QueryPipeline
3536
{
3637
public:
37-
QueryPipeline();
38+
QueryPipeline(IStreamConfiguration const & streamConfiguration);
3839

3940
TermMatchNode const * ParseQuery(char const * query);
4041

4142
private:
43+
IStreamConfiguration const & m_streamConfiguration;
4244
std::unique_ptr<IAllocator> m_allocator;
4345
};
4446
}

src/Common/Configuration/src/StreamConfiguration.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,24 @@
2020
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2121
// THE SOFTWARE.
2222

23+
#include "BitFunnel/Configuration/Factories.h"
2324
#include "BitFunnel/Exceptions.h"
2425
#include "StreamConfiguration.h"
2526

2627

2728
namespace BitFunnel
2829
{
30+
std::unique_ptr<IStreamConfiguration> Factories::CreateStreamConfiguration()
31+
{
32+
return std::unique_ptr<IStreamConfiguration>(new StreamConfiguration());
33+
}
34+
35+
std::unique_ptr<IStreamConfiguration> CreateStreamConfiguration(std::istream& /*input*/)
36+
{
37+
throw NotImplemented();
38+
}
39+
40+
2941
StreamConfiguration::StreamConfiguration()
3042
{
3143
}

src/Plan/src/QueryParser.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <sstream>
2828

2929
#include "BitFunnel/Allocators/IAllocator.h"
30+
#include "BitFunnel/Configuration/IStreamConfiguration.h"
3031
#include "BitFunnel/Plan/TermMatchNode.h"
3132
#include "BitFunnel/Utilities/StringBuilder.h"
3233
#include "QueryParser.h"
@@ -35,8 +36,11 @@
3536

3637
namespace BitFunnel
3738
{
38-
QueryParser::QueryParser(std::istream& input, IAllocator& allocator)
39+
QueryParser::QueryParser(std::istream& input,
40+
IStreamConfiguration const & streamConfiguration,
41+
IAllocator& allocator)
3942
: m_input(input),
43+
m_streamConfiguration(streamConfiguration),
4044
m_allocator(allocator),
4145
m_currentPosition(0),
4246
m_haveChar(false)
@@ -305,10 +309,9 @@ namespace BitFunnel
305309
}
306310

307311

308-
Term::StreamId QueryParser::StreamIdFromText(char const * /*streamName*/) const
312+
Term::StreamId QueryParser::StreamIdFromText(char const * streamName) const
309313
{
310-
// TODO: Return correct stream id here.
311-
return 123;
314+
return m_streamConfiguration.GetStreamId(streamName);
312315
}
313316

314317

src/Plan/src/QueryParser.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,15 @@
2020
namespace BitFunnel
2121
{
2222
class IAllocator;
23+
class IStreamConfiguration;
2324
class TermMatchNode;
2425

2526
class QueryParser
2627
{
2728
public:
28-
QueryParser(std::istream& input, IAllocator& allocator);
29+
QueryParser(std::istream& input,
30+
IStreamConfiguration const & streamConfiguration,
31+
IAllocator& allocator);
2932

3033
TermMatchNode const * Parse();
3134

@@ -90,6 +93,7 @@ namespace BitFunnel
9093
Term::StreamId StreamIdFromText(char const * /*streamName*/) const;
9194

9295
std::istream& m_input;
96+
IStreamConfiguration const & m_streamConfiguration;
9397
IAllocator& m_allocator;
9498

9599
// Used for errors.

src/Plan/src/QueryPipeline.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@
2929

3030
namespace BitFunnel
3131
{
32-
QueryPipeline::QueryPipeline()
33-
: m_allocator(new Allocator(4096))
32+
QueryPipeline::QueryPipeline(IStreamConfiguration const & streamConfiguration)
33+
: m_streamConfiguration(streamConfiguration),
34+
m_allocator(new Allocator(4096))
3435
{
3536
}
3637

@@ -39,7 +40,7 @@ namespace BitFunnel
3940
{
4041
m_allocator->Reset();
4142
std::stringstream s(query);
42-
QueryParser parser(s, *m_allocator);
43+
QueryParser parser(s, m_streamConfiguration, *m_allocator);
4344
return parser.Parse();
4445
}
4546
}

src/Plan/test/QueryParserTest.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
#include <sstream>
2727

2828
#include "Allocator.h"
29+
#include "BitFunnel/Configuration/Factories.h"
30+
#include "BitFunnel/Configuration/IStreamConfiguration.h"
2931
#include "BitFunnel/Plan/TermMatchNode.h"
3032
#include "BitFunnel/Utilities/TextObjectFormatter.h"
3133
#include "QueryParser.h"
@@ -47,7 +49,7 @@ namespace BitFunnel
4749
{"Unigram(\"wat\", 0)", "wat"},
4850

4951
// STREAM:UNIGRAM.
50-
{"Unigram(\"wat\", 123)", "StreamsAreCurrentlyIgnored:wat"},
52+
{"Unigram(\"wat\", 1)", "stream:wat"},
5153

5254
// (UNIGRAM)
5355
{"Unigram(\"wat\", 0)", "(wat)"},
@@ -439,7 +441,11 @@ namespace BitFunnel
439441

440442
std::stringstream s;
441443
s << input;
442-
QueryParser parser(s, allocator);
444+
445+
auto streamConfiguration = Factories::CreateStreamConfiguration();
446+
streamConfiguration->AddMapping("body", { 123 });
447+
streamConfiguration->AddMapping("stream", { 123 });
448+
QueryParser parser(s, *streamConfiguration, allocator);
443449

444450
//std::cout << "input length: " << s.str().size() << std::endl;
445451
std::cout

tools/IngestAndQuery/Commands.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
#include <iostream>
2525
#include <thread> // sleep_for, this_thread
2626

27+
#include "BitFunnel/Configuration/Factories.h"
28+
#include "BitFunnel/Configuration/IStreamConfiguration.h"
2729
#include "BitFunnel/Exceptions.h"
2830
#include "BitFunnel/Index/IDocument.h"
2931
#include "BitFunnel/Index/IDocumentCache.h"
@@ -595,7 +597,8 @@ namespace BitFunnel
595597
<< m_query
596598
<< "\"" << std::endl;
597599

598-
QueryPipeline pipeline;
600+
auto streamConfiguration = Factories::CreateStreamConfiguration();
601+
QueryPipeline pipeline(*streamConfiguration);
599602
auto tree = pipeline.ParseQuery(m_query.c_str());
600603
if (tree == nullptr)
601604
{

0 commit comments

Comments
 (0)