Sunday, January 29, 2006

SharePoint Services, SQL 2005 and PDF searches

WSS (2003) depends on SQL Full-text Search service (MSFTESQL) to perform document searches (SQL Express does not support Full-text search so, to be able to search document contents, you will need to use SQL Workgroup edition or above). Because this service cannot understand all different document formats (Word, Excel, PDF, etc) it depends on filter components provided by third parties (i.e. Adobe provides the pdf filter) to index their contents. These components are often called IFilter components because they all need to implement the well defined IFilter interface (for more on IFilters see this).

To provide PDF search functionality within WSS the PDF IFilter needs to be installed on the SQL server box (to download click here). Installing the PDF IFilter in a SQL 2000 box will automatically make it available to the SQL Full-text Search Engine (MSFTESQL) but, on a SQL 2005 box, MSFESQL will not, by default, load third party filters already installed in the operating system. To enable this the following extra steps are required (after installing the PDF IFilter):

  • Run the following SQL statements against the WSS content database (be aware that this will reduce the security of SQL server so it should be restored after the IFilter is loaded):

    • Exec sp_fulltext_service 'load_os_resources', 1 (This command tells the Microsoft Search service to load OS specific wordbreakers and stemmers)

    • Exec sp_fulltext_service 'verify_signature', 0 (This allows the Microsoft Search service to load unsigned filters)

  • Bounce SQL server and the Full-text Search engine (MSFTESQL).

  • Check that PDFs have been added to the list of files available for Full-text indexing by running the following SQL statement against the WSS content database:

    • SELECT * FROM sys.fulltext_document_types

  • Restore the Full-text service settings to their default

    • Exec sp_fulltext_service 'verify_signature', 1
    • Exec sp_fulltext_service 'load_os_resources', 0

  • To index existing PDFs in WSS go to the WSS administrative page disable and re-enable the full-text search and index component. This will rebuild the Full-text index and use the new IFilter to index existing PDFs.

Thursday, June 09, 2005

Single Sign On with Forms Authentication ?

Read this article to find out how (unfortunately will not work with SharePoint or ASP applications).

Keith's Security Book

Nice of Keith Brown to make his excellent security book available online for reference. But please remember to buy the hardcopy if you like the book. This would hopefully encourage other writers to do the same.

Thursday, April 21, 2005

SharePoint Site Definitions

Site definitions are the way to go if you want to brand your SharePoint team site. Unfortunately there is no clever GUI tool to do this so you will need to go back to the old fashion way - Manual editing. Find out how in this article

Thursday, April 14, 2005

Monday, April 04, 2005

Software Factories

Are Software Factories the solution to the reuse Holy Grail? What is the future for the Software Craftsman?
Have a look and decide for yourself.

Thursday, March 24, 2005

Sharepoint Template

Keep forgetting how to create a Sharepoint web site template ? Here are the instructions.

XML to PDF Converter

If you want to generate sever side reports in PDF from XML data then Ibex PDF Creator is the tool for you. Some of my colleagues have used it and the results (and speed) are very impressive.

Thursday, March 03, 2005

Requirements, Requirements, Requirements...

Those are the three most valuable artifacts of a project. Requirements should drive most (if not all) activities in a project. A project should be architectural centric and requirements driven... We have all heard these cliches before but how exactly does one manage requirements in an iterative process? How do we make sure that all team members are rowing the same way?

Supporting Iterative Development Through Requirements Management gives a good insight on how effective requirements management can be accomplished in an iterative process - in this case using the Rational unified Process (RUP). Even if you are using another iterative process (like SCRUM or XP) the article should give some good ideas.

If you are not using an iterative process then forget about the article and read "Why should I be using an iterative process" instead.

Tuesday, March 01, 2005

I Believe in BLOBs

I'm talking about SQL server Binary Large Objects. Storing files in a database BLOB it's a very clever way of improving your application maintainability and in avoiding possible permissions nightmares. The File Upload with ASP.Net article shows how to upload a file from a browser and store it in a BLOB.

Unit testing made easy

Unit testing has taken a new momentum with the rise of the agile development practices. NUnit is a fantastic and simple unit-testing framework for all .Net languages but if you used it before you have probably come across the difficulty on how to isolate the unit that you want to test. NMock was created to address this issue. Mock Objects to the Rescue is a very good article on how to use this useful tool.

If you have not used NUnit before you will find a good introduction on the Test Driven C# msdn article.

Hosting ASP.NET Web applications

For good practices on how to host multiple ASP applications have a look at chapter 20 of the Improving Web Application Security book from the Microsoft Patterns and Practices series. I quite like their recommendation on isolating applications by identity

Security Contexts in ASP.NET

If you, like me, were confused about the different security contexts in IIS and how can they affect the way that you connect to SQL server look no further, Keith Brown's article A tale of Three Security contexts in ASP.NET tells everything that you need to know. Just remember that in IIS6 things work slightly different (i.e. you now have application pools and the default ASPNET account has been replaced by the "Network Service" account).

Thursday, December 16, 2004

Sharepoint Information

Banana Biscuit is an excellent blog with lots of links to backstage information about SharePoint.

Tuesday, December 07, 2004

To interface or not to interface ?
Here is the question

Isn't it funny that, suddently, interfaces do not seem to be in fashion in the .Net world anymore ?

In the not so good old days of COM there wasn't an option - if we wanted a component we had to have at least one interface. The abstract server pattern was alive and kicking and the advantages of separating a service contract from its implementation were clear to all (at least to the ones using OO languages). In those days there was a clear distinction between a component (something providing services trough an interface) and a class.

Now, in the new world of .NET, we can have classes, in different assemblies, talking directly to each other. Call me an old fashion geezer but I still strongly believe in patterns like the Separated Interface and Factory (from one of my favorite books Agile Software Development). Perhaps I should go back to my perfurated cards...