Search engine for .net - c#

I am looking for a search engine that can be used for sites. Sometimes we dont want to use google embedded search or the complication of lucene.
I run in to these requests:
Crawl based search
Rating and ranking of content based on content types
Searching documents like pdf and docs etc..
I dont mind if it is a commercial control that we have to purchase but I would like to be able to integrate it nicely in to some of these use cases

There used to be Lucene.net. Recently the status of this project is becoming questionable (not certain of the details). Here is the site: https://lucenenet.apache.org/
Looks like you can still download the code. Probably not much development going forward.
Bob

I have used dtSearch in the past which I know has a web crawler built into it. It doesn't come with a front end control though, it's strictly a search engine. You need to write your own results control. It does have a powerful query language though that lets you score on multiple dimensions depending on how you set up your indexes. It also has a decent .NET API to work with.
I don't know that this is any less complicated than Lucene though. So then I start to wonder what complications you are hoping to avoid.

You should look at Apache Solr (built using Lucene) - it offers a RESTful interface for integrating into .NET or whatever platform you prefer. It offers all the goodies could ask for without concern for compatibility Java .NET versions etc.
You can easily integrate Solr into your .NET app using SolrNet

Related

open source faceted search / guided navigation for ecommerce sites with .net apis

i am looking for open source libraries which provide high performance faceted search / guided navigation for ecommerce sites
our ecommerce platform is entirely built on .net and so i would prefer libraries which do provide .net apis
performance is of utmost importance here... i checked out sphinx as well as solr but looking for better options as far as performance goes
as per blogs sphinx takes an average of 5 - 6 seconds to perform the first level of faceted search which is unacceptable in a real ecommerce environment
Apache Solr is exactly what you are looking for.
Is a full-fledged search server built using Lucene libs and easily integrable into your .NET application because it has a RESTful API. Comes out-of-the-box with several features such as faceting, caching, scaling, spell-checking, etc.
You can make life easier for your app-to-Solr interaction using the excellent SolrNet library.
Have a look at lucene.net it is a very powerful search engine that can be customised for most search related requirements:
http://incubator.apache.org/lucene.net/

ASP.NET vs SharePoint - which one is better for web developers?

I have less information about share point (only basic info). Microsoft released SharePoint for web developers. Microsoft also said SharePoint has compatibility with other .NET technologies like Workflow Foundation, WCF, etc and it's easy way to develop web sites and web apps.
Also as I know ASP.NET has compatibility with .NET technologies and C#. And it easy for every one whom at least work with C# or VB.NET.
So with these advantages of SharePoint:
Why we must use asp.net instead SharePoint?
Why Microsoft develops ASP.NET (new version 4)?
What's major reason to chose one of these?
Is really developing base-on share-point faster and easier than asp.net?
SharePoint is an Application that sits on top of ASP.net (3.5 SP1 in the current SharePoint 2010 - No ASP.net 4.0 will be possible). They do override a lot of ASP.net built-in functionality (they have their own .aspx Parser and Virtual Path Provider for example).
With ASP.net you have a very well documented, battle-hardened, mature and stable platform with a good API.
With SharePoint you gain a poorly documented, bug-ridden, very limited application that handles a lot of features that you would have to code yourself (e.g., User Profile Management, Document Organization and Versioning and Social Features like Commenting and Tagging), although for the most point SharePoint handles them really poorly and does not allow you to override them, which means that you spend a lot of time rewriting them anyway and trying to integrate them back.
Basically my advice as a SharePoint developer since 2006: Use it when you absolutely have to, avoid it whenever you can and stay with just ASP.net.
SharePoint is good as a simple document management and very light social system. You can quickly customize smaller parts of it and add a lot of value to your company. But in the moment you need something that even only slightly different from what Microsoft envisions, you hit a wall that you can't pass. It's great for what it does, nothing more, nothing less.
I am a Sharepoint Developer... And let me say that I wish it was just ASP.NET! That would be great... It brings with it it's own paradigms which are pretty complicated.
ASP.NET and Sharepoint are 2 'different' technologies. Sharepoint is mostly built with ASP.NET, and delivers ASP.NET pages to a user.
You can use either VB.NET or C# with Sharepoint.
In my opinion, Sharepoint development is only quicker if you are planning on using it's in-built lists, user management etc. Though these do take time to learn. The cool thing about sharepoint is that you can develop web parts, and re-use these web parts on multiple pages throughout the installation.
Microsoft continues to develop both ASP.NET and sharepoint because they are two different beasts, with ASP.NET pages being deliverable through Sharepoint.
As to which is best for you, you haee to make that call. Do you need Sharepoint? Or would a pre-built CMS such as DotNetNuke be better? Or even creating your own site with Windows credentials management so you can use SSO (Single Sign On).
It really depends on what you want to get out of your install. Sharepoint is expensive, and developers for Sharepoint are also expensive because of the specialist knowledge.
As a developer... (I hope my boss isn't watching!!) I much prefer to build things from scratch than to use SP, but that's my job...
Don't use sharepoint unless you need it, check this article:
Challenges when using SharePoint compared to ASP.NET
If you just want to create a website, go for ASP.net.
However, if your company has a SharePoint installation and you want to integrate with that, you should go for SharePoint.
SharePoint is build on ASP.net, but has many extensions that allow data to be shared throughout the company.
However, if you are just building a website and don't need all that, ASP.net is the way to go.
I'll try to answer point by point:
SharePoint isn't a replacement for ASP.NET. It's an extension of the ASP.NET platform that simplifies the implementation of several common use cases that are mostly relevant to enterprise websites: document management, knowledge retention, collaboration etc... SharePoint relates to ASP.NET in a similar way that Wordpress relates to PHP: it's a specialized extension rather than an alternative.
Same explanation as in (1).
Use SP if the things you need to develop are in the scope of what SP provides, which is mostly enterprise solutions of one sort or another. Here's a good summary of what SP can do.
Again, it would be faster and easier if you're trying to develop the things that SharePoint is meant for. Also, SP isn't so well-documented, so if you're not familiar with it, you might have a slow start.
SP is a very powerful platform, however, it does seem to bring complexities to the table that otherwise may not be there with simple ASP.net. Plus when you move "OOTB" with SP it becomes a bit challenging with RTM, etc. I live in blogs with "weird" things that happen. I am not a full blown SP developer but have been working with it for over 7 years and well, I find building solutions that will work within SP, but not necessarily built withIN SP generally are going to be easier to maintain and controllable. Just my opinion!
I would compare all for you and its up to you to decide.
ASP.NET >> Its a programming language by Microsoft which means you would need Windows Server + IIS + Database server like SQL Server + some Anti Virus on the server.
Say now you need some more PC for your servers and so your costs go up all the time you need a new server
Sharepoint Server are again from Microsoft and so everything above applies.

Help me to choose the right platform for my Portal from .net, php, php based cms and .net based cms

hi I am planning to develop a site very similar to http://www.nextdaypets.com/ but with some more features...i have worked on JOOMLA n i know it pretty well. but there are few limitation like access level control and there is no component available for what i need. what i m confused about is that whether i should make that component in joomla or should i develop my own cms or should i take some .net based cms and write the component for it. I know C# and .net framework as a beginner. I just completed a certification course in .net last month and i don't know php but don't have issue in learning it...so what should i do...please suggest.
Well, as i understood , all you need to do is to adopt an open source CMS (joomla or drupal) and customise it. If you know a bit of php it will take you a day of expirementing to get familiar with making components & modules for joomla /drupal. Majority of the work you can do by customising the existing stuff and using third party open source components available already. The remaining small delta amount of work, you can code yourself.IF won't be that tough i can assure.
Developing a CMS of your own might not b a good option, as it takes a lot of effort to get a stable one with all features, currently being offered.
Also , if you have a doubt about the platform, i would suggest to stick on to open source platform, rather than Commercial one. The large number of OSComponents available as well as the large community support are factors defenitly you should consider.
writing your own cms is lots of work, so you should consider this carefully. Extending an existing framework could save you a lot of time.
In your case I'd choose a cms which fits well to my purpose and uses a language I'm familar with. So if you like C#, then look for an ASP.NET based cms. Of course, if you like to learn PHP joomla would be a good choise.
Usually, when I have to pick a platform I consider a certain number of variables. For example, does your customer want an open-source or a commercial platform? Is it concerned with being dependent on you for future changes to the system? Does he have already a hosting provider? Will he host the website himself? These are all tech-questions that should be kept in consideration.
I would strongly advice against writing your own CMS. That's a lot of work, and even the best and most tested products hide some bugs. Relying on something that already exists out there, it will speed your development up, as it will allow you to focus on the specific functionalities, and not on the overall system or basic features (client-server architecture, caching, views resolving, itemization, etc. ...).
I've worked quite a lot with many CMS, and in this period my attention is focused mainly on Umbraco, a .NET-based open-source CMS that has many interesting features. I personally don't like Drupal, Joomla, Wordpress, etc.
If you (or you customer) have money to spend and can afford a commercial platform, I would suggest you to take a look at Sharepoint or Sitecore; Sitecore is somewhat conceptually close to Umbraco, whereas Sharepoint is more extensive but there is more work to do to bring it up and running.
If you are looking for an e-commerce platform and PHP doesnt scare you, you could give a try to Magento.
I hope these few names can help you. I mentioned them because of my own personal experience and - to be honest - they are all good products...
Cheers,
Gianluca.

Search engine to integrate in a .NET stack

I am looking for a very robust software search engine to integrate in a .Net web site.
The current proposed solution is Lucene.NET a stack based on Lucene. However, I would like to evaluate other search engines before making my mind up.
The feature set we need is the following:
Ability to crawl arbitrary pages via HTTP
Ability to parse sitemaps
Ability to get lists of URIs to parse via a database look-up
Ability to restrict the search to a particular language/locale
Ability to restrict the search to a subset of the pages (e.g. via a regex on the URI)
Speed and scalability (this is for a public website with a ton of traffic)
Must have .NET API support or a super-easy http-based API that can be wrapped in a .NET API
Language-dependent full-text support
Other things which would be great, but not deal-breakers if they aren't supported:
Reporting
Aliasing and biasing of results
HTTP-based administration pages
SQL Server support
What other software search engines have worked for you? Is there any you would recommend or that we should avoid?
Check out Microsoft's Search Server Express, although the page looks screwed up at the moment so try this link.
There's other enterprise engines out there such as vivisimo velocity (very extensible), autonomy, etc. Lucene and Solr are limited, hard to use and configure, but that's what you get when you want something free.
Lucene.Net is an information retrieval library, not a search engine. In particular it won't do any of:
Crawl web pages or parse sitemaps
Reporting
HTTP-based administration pages
SQL Server support (Lucene.Net uses its own simple but highly effective file format, and doesn't use SQL Server)
Although I'm a strong supporter or SQL and would recommend it as the full-text search component of a search engine, you will also need a crawler / html parser component in order to create a full functional search engine, and you are going to have to carefully design your Lucene.Net indexes to maximise the performance of the queries that you want (searching by language/locale)
Try looking at the Solr project which is a fully fledged search engine using Lucene - this might be more suited towards your needs.
I'd recommend checking out Solr. It's Java-based, but meets the HTTP-based API leg of your requirements, is designed to run on a separate box/cluster from your primary app (so you don't necessarily need Java AND .NET on the same hardware), and it has a lot of momentum. It's been a while since I worked with it, but I don't remember it providing it's own crawler. If that's still the case, it should be straightforward to use a standalone crawler and the aforementioned API to make it work.
Like others have said, definitley go with the original Lucene using Solr. Integrating it with .Net is super simple. I actually just recently blogged about this: http://crazorsharp.blogspot.com/2010/01/full-text-search-using-solr-lucene-and.html
Coveo is the search engine that we are currently putting in to replace a Google Mini that was used for a number of years. I'm just pointing these out as something to explore as I haven't used either enough to know how good they are. I just know of headaches with each, many many headaches.
Instead of using Lucene.Net directly, have you considered using something that wraps it and provides more functionality akin to what you're after?
Solr is an Apache product that does this, and there is also a .Net client port of for it. I've never used it in production, but it looks like the type of thing you're after.
Along a similar idea is Nutch (written by the guy who originally wrote Lucene), although I'm not aware of any .Net version of it. Nutch does have a spider component to crawl sites.
You may also have a look at OpenSearchServer
Runs like a charm on Windows. You can use the SOAP Web service to do the integration.
There is also a C# skeleton library working with the XML/REST API.
Disclaimer: I am the CEO of OpenSearchServer

Implementing 'Search' functionality on website

I have a website which has thousands of (ever increasing) resources in it. I implemented the usual Sql Full text Search and it was working fine until recently. I noticed some performance issues with it. I am using MySql Database with C#. NET as the back-end code.
I just need few valuable suggestions from you so that I can take those into account while building a new search strategy for my website.
What can I use to improve performance in the search functionality on my site?
You could try out;
http://incubator.apache.org/lucene.net/
Take a look at Lucene.NET. It is a high-performance, full-featured text search engine library which was initially written in Java but ported over to .NET. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.
Try using Lucene.NET. Many websites have text search based on it.

Categories

Resources