I have a use-case where I would like to capture click events for individual
users so I can answer questions like show me everything with x text and
that I have clicked before + the inverse of show me everything with x text
that I have *not* clicked. I am currently doing this by sticking the event
into the main index which resides with the rest of the document.

We have recently made some modifications to make a smaller "sub collection"
of the main document index but still would like to ask the same questions,
so I thought a cross-core join with a "click" metadata collection could be
a decent trick so that we can consolidate this quickly changing data in a
separate collection without needing to worry about merging this information
into multiple document collections.

I am trying to write some unit tests to simply stand up multiple
collections (doc + click) in SolrCloud via the collections CREATE API
though this assigns unique core names so a query of "{!join ...
fromIndex=clicks} user=foo" doesn't work since no core name is actually
called "clicks" but rather "clicks_shard1_replica1",
"clicks_shard2_replica1", etc. The CREATE request doesn't allow you to
specify core names, so I attempted to rename the cores via the cores rename
API and it failed
on various rename operations saying Leader Election - Fatal Error, SolrCore
not found: clicks_shard1_replica1  in [clicks]. So since that didn't seem
to work I tried the collections DELETEREPLICA followed by a subsequent
ADDREPLICA, unfortunately when I attempt to set properties for the core ("
property.name=value") on the request it doesn't appear to actually get set
since the core refuses to load due to a solrconfig.xml property
substitution failure.

Long story short, I have been banging my head against the wall to get a
consistent core name via API calls and keep running into gotchyas. I would
like to take a step back and ask if this approach (cross-core metadata
join) is even reasonable in the SolrCloud architecture. If it is still
reasonable does anyone have ideas on how a common core name can be achieved
via API calls? If it isn't an advised approach are there suggestions on an
optimal indexing strategy for this particular scenario?

Thanks for the help,

-Steve

Reply via email to