aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-05-26 20:54:50 +0200
committerGitHub <noreply@github.com>2020-05-26 20:54:50 +0200
commit06f8459ac88e53016c6e1b85e39893f1f93044f7 (patch)
tree82d2a4a2b9a6b031be16f958d0bceca2e5e34109
parent5c5a4aa50217dbb3a0ab7f5ac45e7423b01a2ec8 (diff)
parentb0100ea9f0e56316a8d95f2d2248b175d0b6a39b (diff)
Merge pull request #13381 from vespa-engine/revert-13378-toregge/setup-field-match-executor-shared-state
Revert "Setup field match executor shared state."
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp60
-rw-r--r--searchlib/src/vespa/searchlib/features/fieldmatchfeature.h1
2 files changed, 20 insertions, 41 deletions
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp
index 127a6c9cd28..9e4aa0d96ab 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp
+++ b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.cpp
@@ -18,50 +18,35 @@ using CollectionType = FieldInfo::CollectionType;
namespace search::features {
-class FieldMatchExecutorSharedState : public Anything {
-private:
- PhraseSplitterQueryEnv _splitter_env;
- fieldmatch::ComputerSharedState _cmp_shared_state;
-public:
- FieldMatchExecutorSharedState(const fef::IQueryEnvironment& query_env,
- const fef::FieldInfo& field,
- const fieldmatch::Params& params);
- ~FieldMatchExecutorSharedState() override;
- const PhraseSplitterQueryEnv& get_phrase_splitter_query_env() const { return _splitter_env; }
- const fieldmatch::ComputerSharedState &get_computer_shared_state() const { return _cmp_shared_state; }
-};
-
-FieldMatchExecutorSharedState::FieldMatchExecutorSharedState(const IQueryEnvironment& query_env,
- const FieldInfo& field,
- const fieldmatch::Params& params)
- : Anything(),
- _splitter_env(query_env, field.id()),
- _cmp_shared_state(vespalib::make_string("fieldMatch(%s)", field.name().c_str()), _splitter_env, field, params)
-{
- // empty
-}
-
-FieldMatchExecutorSharedState::~FieldMatchExecutorSharedState() = default;
-
/**
* Implements the executor for THE field match feature.
*/
class FieldMatchExecutor : public fef::FeatureExecutor {
private:
+ PhraseSplitterQueryEnv _splitter_env;
fef::PhraseSplitter _splitter;
+ const fef::FieldInfo & _field;
+ fieldmatch::ComputerSharedState _cmp_shared_state;
fieldmatch::Computer _cmp;
void handle_bind_match_data(const fef::MatchData &md) override;
public:
- FieldMatchExecutor(const FieldMatchExecutorSharedState& shared_state);
+ FieldMatchExecutor(const fef::IQueryEnvironment & queryEnv,
+ const fef::FieldInfo & field,
+ const fieldmatch::Params & params);
void execute(uint32_t docId) override;
};
-FieldMatchExecutor::FieldMatchExecutor(const FieldMatchExecutorSharedState& shared_state)
- : FeatureExecutor(),
- _splitter(shared_state.get_phrase_splitter_query_env()),
- _cmp(shared_state.get_computer_shared_state(), _splitter)
+FieldMatchExecutor::FieldMatchExecutor(const IQueryEnvironment & queryEnv,
+ const FieldInfo & field,
+ [[maybe_unused]] const fieldmatch::Params & params) :
+ FeatureExecutor(),
+ _splitter_env(queryEnv, field.id()),
+ _splitter(_splitter_env),
+ _field(field),
+ _cmp_shared_state(vespalib::make_string("fieldMatch(%s)", _field.name().c_str()), _splitter_env, field, params),
+ _cmp(_cmp_shared_state, _splitter)
{
// empty
}
@@ -133,7 +118,6 @@ FieldMatchExecutor::handle_bind_match_data(const fef::MatchData &md)
FieldMatchBlueprint::FieldMatchBlueprint() :
Blueprint("fieldMatch"),
_field(nullptr),
- _shared_state_key(),
_params()
{
}
@@ -205,7 +189,6 @@ FieldMatchBlueprint::setup(const IIndexEnvironment & env,
const ParameterList & params)
{
_field = params[0].asField();
- _shared_state_key = "fef.fieldmatch." + _field->name();
const Properties & lst = env.getProperties();
Property obj;
@@ -343,17 +326,14 @@ FieldMatchBlueprint::setup(const IIndexEnvironment & env,
FeatureExecutor &
FieldMatchBlueprint::createExecutor(const IQueryEnvironment & env, vespalib::Stash &stash) const
{
- auto *shared_state = dynamic_cast<const FieldMatchExecutorSharedState *>(env.getObjectStore().get(_shared_state_key));
- if (shared_state == nullptr) {
- shared_state = &stash.create<FieldMatchExecutorSharedState>(env, *_field, _params);
- }
- return stash.create<FieldMatchExecutor>(*shared_state);
+ return stash.create<FieldMatchExecutor>(env, *_field, _params);
}
void FieldMatchBlueprint::prepareSharedState(const IQueryEnvironment &env, IObjectStore & store) const {
- if (store.get(_shared_state_key) == nullptr) {
- store.add(_shared_state_key, std::make_unique<FieldMatchExecutorSharedState>(env, *_field, _params));
- }
+ (void) env;
+ (void) store;
+ //TODO WE need too extract the const and costly parts from PhraseSpiltter and Computer
+ // and initialize it here for later reuse in the multiple search threads.
}
}
diff --git a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h
index f203574e588..0e5f873005d 100644
--- a/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h
+++ b/searchlib/src/vespa/searchlib/features/fieldmatchfeature.h
@@ -13,7 +13,6 @@ namespace search::features {
class FieldMatchBlueprint : public fef::Blueprint {
private:
const fef::FieldInfo * _field;
- vespalib::string _shared_state_key;
fieldmatch::Params _params;
public: