I've been asked to implement a search in Umbraco, which doesn't seem well suited to XlstSearch (we have ~20k+ nodes), or Examine (lots of things to query through parent Ids, relation types, fields).
I've got a version working that is constructing LINQ queries, and successfully making its way around the documenttypes, versions, etc - though it's a little sluggish.
I'm contemplating making a search index in a fresh table, and binding to a few events (Publish, Unpublish, Delete) to maintain the index - could I please get your feedback on this?
There would be about 4 indexes maintained.
The other part I'm trying to decide on is if I should tie it to the cmsTags + umbracoRelation table - as it requires this for the query. I plan to use the BeforeDelete event to make sure I clear my index entries out of the way, to avoid any foreign key constraint errors when performing a delete in Umbraco.
i would stick with examine and if your worried about querying over too many properties you can use the gatheringnode event and concatenate all the fields into one field and call it say contents and query over that. Examine based on lucene is awesome and very very powerful and with all due respect your making extra work for yourself when there is already an excellent search solution in place. Take a look at my blog post regarding webinator and also there is link to microsoft search server which is another search option.
Having worked on a search API (examine) I can tell you that creating a search API is one of the hardest things in software to try and write, and we didn't really write a search API, just wrapped one.
There's a lot of things people don't think about with search, such as: - dealing with nuances in a language - finding the 'best match', ie: in the string 'The quick brown fox' is the search 'quick brown' higher ranked than 'quick fox'? - What do you do about 'the', 'and' 'a', etc - How do you deal with wildcards - Does 'fox brown' return a match in 'the quick brown fox'
And many more.,,
Not trying to scare you off, just be aware of what you're getting into up front :)
Constructing an alternative search - Feedback...
Hi,
I've been asked to implement a search in Umbraco, which doesn't seem well suited to XlstSearch (we have ~20k+ nodes), or Examine (lots of things to query through parent Ids, relation types, fields).
I've got a version working that is constructing LINQ queries, and successfully making its way around the documenttypes, versions, etc - though it's a little sluggish.
I'm contemplating making a search index in a fresh table, and binding to a few events (Publish, Unpublish, Delete) to maintain the index - could I please get your feedback on this?
There would be about 4 indexes maintained.
The other part I'm trying to decide on is if I should tie it to the cmsTags + umbracoRelation table - as it requires this for the query. I plan to use the BeforeDelete event to make sure I clear my index entries out of the way, to avoid any foreign key constraint errors when performing a delete in Umbraco.
Any feedback welcome - Thanks.
overflew,
i would stick with examine and if your worried about querying over too many properties you can use the gatheringnode event and concatenate all the fields into one field and call it say contents and query over that. Examine based on lucene is awesome and very very powerful and with all due respect your making extra work for yourself when there is already an excellent search solution in place. Take a look at my blog post regarding webinator and also there is link to microsoft search server which is another search option.
regards
Ismail
Having worked on a search API (examine) I can tell you that creating a search API is one of the hardest things in software to try and write, and we didn't really write a search API, just wrapped one.
There's a lot of things people don't think about with search, such as:
- dealing with nuances in a language
- finding the 'best match', ie: in the string 'The quick brown fox' is the search 'quick brown' higher ranked than 'quick fox'?
- What do you do about 'the', 'and' 'a', etc
- How do you deal with wildcards
- Does 'fox brown' return a match in 'the quick brown fox'
And many more.,,
Not trying to scare you off, just be aware of what you're getting into up front :)
is working on a reply...