Express Objects not being indexed in search results (8.1.0)

Permalink 1 user found helpful
Search is functioning normally on my site, but when I search for information contained in an Express Object, nothing appears.

For example, I have a team of people who are all express objects and output to a Leadership page. When I search for the name of a person, the search says they can't be found. But when I go to the Leadership page, the name is there. So my theory is that the express objects aren't indexed in the system.

Is there possible a toggle I'm missing or is this a limitation due to the relative newness of express objects?

I have checked and these pages are not excluded from the search index.

Any ideas? Thanks!

View Replies: View Best Answer
Ronaldo replied on at Permalink Reply
Hi fatwreck,

Did you have any "solution" to this question? I need help too...

fatwreck replied on at Permalink Best Answer Reply
Hi there,
Since it was time sensitive, we ended up ditching the C5 built-in search and set up Sphider 1.5.1. It's a database search engine thing and wasn't too tough to get up and running. Make sure to not use the original Sphider since it uses out of date php. The one I'm linking to is a modified version based off the original to work with more modern standards.

Good luck!

Check it out here:
OKDnet replied on at Permalink Reply
I'm just guessing here, but why not upgrade to 8.2? The release is all about bug fixes, and it contains a lot of them (fixes).
ebirt replied on at Permalink Reply
We are running 8.2, and are running into similar issues on our site. I'm curious to hear some specific ways to move forward with getting express object data that is displayed in blocks to be indexed by search.

cryophallion replied on at Permalink Reply
I just discovered this too. However, I think that due to how search is done in C5, it may not be feasible in house.

Right now, search I believe is done by reading the block on each page, and the specific attributes for that block, and the page attributes. But Express entries can be in many places on many pages, depending on how the data works. It would have to do the block queries for express just to see if the data is on that page, and that would be quite the huge endeavor on data heavy sites.

So, either you make each item its own page, so it can search, or you install a 3rd party indexing program.
ebirt replied on at Permalink Reply
Our solution is a bit of a workaround, but is not completely inelegant:

I created a new text attribute for all pages, and this attribute is set to be indexed by search. It's called something like "Generated Keywords"

The controller for the block that displays the express object was then extended to parse keywords from the express object text fields and store them in "Generated Keywords", thus exposing the content to the search on a per page basis.

One final step was to add a second page attribute called "Remove Keywords". Any words in this field are removed from "Generated Keywords", thus giving our content manager a higher degree of control.

It's still no Google, but it has been pretty effective.

Hope that helps.
cryophallion replied on at Permalink Reply
So, did override the express detail block controller, or create your own new block type for this? It's a fascinating idea. The only concern is how to do this in a "generic" way, so you don't need a different block type for each. Or does it search for any text/textarea attributes and use those?

Hmm. So, let's say you change an express entry. In this case, the search will only be updated when the entry is visited, not changed in the backend. That's interesting.

The other issue here is when using generic pages. So, let's say I have the following express entities:
`Regions` (since some have states, provinces, localities, etc)

Country has a one to many relationship with Region. Region has a one to many with Cities. I do not want to have to create pages for each one. So I use the express detail to list all the cities, with links to a region page that has another detail that shows the region's info. That page also has another detail block to show the cities, and those link to the city page which has the detail block for cities. Each is just a simple block template to show the correct info.

In these cases, I am not sure the controller can parse out the info for search, as each entity does not have its own dedicated page.

Am I correct in this assumption? I am trying to be able to make datacentric sites, but without having to generate (or update, or delete) pages on every change. That is the quandary here.