I have to implement full-ext search for website based on SDL Tridion WCMS. Any suggestions or an idea how to implement full text search using Tridion Query?
The SDL Tridion Content Delivery API is designed for retrieval of content based on system or custom metadata and/or taxonomy. The full text is not available via the API for searching. To implement a full text site search on a Tridion site it is normal to use/integrate a separate search engine, such as Google Site Search or one of the Lucene based solutions. The best integrations usually use a storage extension to notify the search indexer when content has changed.
See How can we integrate Microsoft FAST with SDL Tridion 2011 SP1? and Extending Content Delivery Storage in SDL Tridion 2011 for some ideas/examples.
If your site is accessible to a Google bot, Google Site Search is easy.
You might also look to the app server for your full text search (for instance its in a .NET/SQL environment).
If you want an enterprise search platform, check out the open source Solr. With Java, .Net and JavaScript APIs and a REST-based server/service, this open source option is worth taking a long look.
Not to go too far off topic, but this helped me visualize when I was answering the same question for the first time: site search means three things. One, a search engine; two, a search schema/index (decide what the beast eats and feed it); three, a search user interface.
Related
We need Magnolia 5.5 integration with Microsoft Dynamics(CRM) but as per the following magnolia documentation the integration is not available out of the box with Magnolia. Magnolia Documentation
How can we build that functionality in Magnolia, please advice.
Thanks in advance..
All depends on what kind of API Dynamics exposes for such integration. And what features of Dynamics exactly do you want to integrate.
If there is any REST based API, you can have a look at similar integrations (those for SugarCRM, Eloqua or SalesForce come to my mind) and do what needs to be done. Source code for the above integrations provided by Magnolia is AFAIK available to all Enterprise customers.
Typically you have two parts of the integrations
- backend one where you create content connector for an app and the app directly to allow your editors to interact and select items from Dynamics, and
- some templating functions that allow templates to understand items previously selected by the editors and retrieve those from Dynamics when rendering the template.
- typically you will also have to deal somehow with authentication between Magnolia and Dynamics and (unless all is super fast) with caching items retrieved from Dynamics in Magnolia in some form of volatile cache.
But really, any more details on what to do and how depends on the use case. It would be different for building customer self service portal and for e.g. just listing phone number of the sales/support rep closest to visitor of the site based on geolocation.
We are upgrading to Tridion 2011 SP1 and as a part of Tridion search implementation we are using FS4SP (Fast Search for sharepoint 2010).
In proposed implemenatation search environement consists of following servers:
FAS4SP
FISE
Can someone guide us regarding how to push content to FAST from tridion and how to retrieve the same?
(Here due to some reasons we are not considering crawling of website by FAST)
What all APIs can be used for this implementation?
If you don't want to use the crawling approach, you will need to create a custom deployer, please take a look at this other article:
How can we integrate Microsoft FAST with SDL Tridion 2011 SP1?
Alternatively, if you don't have a development team who is familiar with Java, you might considering creating a .NET application which updates your FAST index based on either a File System or Database trigger when your pages or components are published, updated or deleted from your broker repository.
You will probably want to create XML for FAST and have the Custom Deployer (or Event System) send the content to FAST.
First create the FAST XML that works and write a sample app so you can insert it into the FAST index from either a .NET or Java application. This does not yet involve Tridion.
Then write your Custom Deployer or Event System and pass the XML to FAST.
IF you are using a Custom Deployer approach I would suggest to contact Tridion Professional Services if you have not done it yourself or are not a Java programmer. The new Tridion 2011 Storage API provides new opportunities for the Custom Deployer. In the meantime I would suggest to append the FAST XML to the normal Page Content at the end, surrounded by some markers, and have your custom deployer pull it out of the Page output, send to FAST, then remove from the output before continuing.
This is a fairly difficult challenge for those who do not have serious Content Delivery / Deployer / Java skills. However, if you want to go for it yourself I would suggest taking at least 2 weeks of time to research existing solutions and experiment with the API.
Using the Event System might be a little easier - but your success or failure message will not appear in the Publish Queue and if the search index fails to update you can only log the failure and not pass the info back to users.
I've not dug into the details of what and how SDL Tridion is storing data in it's internal search engine (SOLR), but I need to build a GUI extension that needs to perform searching on component/metadata fields across publications.
I can't see any reason not to have a look into SOLR, but before I invest the time, does anyone know any reason why this would be a bad idea?
Thanks in advance!
It's a bad idea in general to bypass the API and directly query SOLR.
From your question, I see no reason to do so.
Do you need to index more data than what is already indexed by Tridion?
If not, surely you can just search using the API?
If you do, you could consider implementing a custom Search Indexing Handler for the additional data. Although this is not very well documented at the moment, it seem rather straight forward to create (implement ISearchIndexingHandler and update your CM and SOLR configuration). The benefit would be that your data can also be searched for using the standard Tridion search.
It really depends on your search requirements. If it's just about simple search - then it's probably fine, but if you want to make some Tridion specific searches then it will be quite difficult as SDL Tridion does a lot of post processing on SOLR results. Why can't you just use CoreService and have a convenient supported search interface?
As Peter said, its really a bad idea to interact with SOLR that comes with Tridion. Tridion has a abstraction layer to hide complexity of SOLR query. For example tridion hides case sensivity of the search keyword.
I strongly recommend to use tridion search api to build ur interface. Tridion search api also supports executing solr query directly. But its not recommended.
For indexing additional data u can implement ISearchIndexingHandler. It has some complexity with the solr config files (adding new fields).
I'm about to embark on the ASP.net project which involves building a pretty powerful search function. The application is very database heavy. Essentially, organisations will be adding a lot of metadata about themselves in the form of multi-selects, free text boxes etc. which are all stored in SQL 2008.
When it comes to search I'm loath to re-invent the wheel. Normally with a content driven site I'd use a component such as Zoom Search or ASP.net Search engine (http://www.aspnetsearchengine.com/UltimateSearch/Features.aspx)
But I don't think these type of content driven search controls are apppropriate for what I need given the data driven nature of the search.
I'm thinking full text search is the way to go but then I'm thinking I'll probably lose a lot of the bells and whistles I'd typically get with a packaged search module like spelling suggestions, document search, synonyms, ignore words etc.
Are there any good hybrid solutions (paid or free) for .net sites that provides these nice features within a search framework of sorts?
Thanks,
Ed
Lucene is pretty highly regarded across a number of languages. It's in use on some pretty large sites too, i know monster.com use it and their search is pretty extensive.
https://lucene.apache.org/
Edit Found some more resources:
Lucene.Net and SQL Server
SQL Server 2008 Full Text Search (FTS) versus Lucene.NET
http://ifdefined.com/blog/post/Full-Text-Search-in-ASPNET-using-LuceneNET.aspx
open source faceted search / guided navigation for ecommerce sites with .net apis
Which is the best way to create a site search engine for a dynamic asp.net site with hundreds of dynamic pages. I have seen many products and articles
http://www.karamasoft.com/UltimateSearch/overview.aspx
http://www.sitesearchasp.net
http://www.easysearchasp.net/
http://msdn.microsoft.com/en-us/magazine/cc163355.aspx
http://www.codeproject.com/KB/asp/indexserver.aspx
Priyan,
Another high-quality open-source option would be the .NET port of Lucene
CodeProject - Introducing Lucene
dotlucene
lucene.net
You haven't mentioned Google's SiteSearch "product". Is one of your requirements that you'd like to host the search engine/catalog yourself?
Microsoft also has a product Search Server 2008 Express although I'm not sure if you can install it on any hosting provider.
And (disclaimer: I am the author) there is also a very basic open source project on CodeProject called Searcharoo (also at searcharoo.net). It is really meant as a 'demonstration/learning experience' - hence the six how to articles - but it might suffice for a small dynamic site.
I have used SQL Server Full Text Search for some projects - works well but it's really just searching database content, not a combination of static and dynamic Html/Pdf/Word/Jpg etc documents which a "real" web crawler will do.