Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!


Click here to return to the '10.4: Make Spotlight index PHP files' hint
The following comments are owned by whoever posted them. This site is not responsible for what they say.
10.4: Make Spotlight index PHP files
Authored by: schwa on May 25, '05 04:55:40PM
You shouldn't expect this (or any other importer) to work with any arbitrary file types just by modifying the mdimporter's Info.plist

Mdimporters are crafted for particular types of data and the authors of the importers know best how to set up their Info.plist

Hacking on the Info.plist is taking a gamble. Maybe it'll work. Maybe it'll work most of the time. But you're asking for trouble in the long run. When mdimpor crashs it does so silently in the background. The end user won't know unless she is paying close attention that anything is wrong.

If you want an mdimporter for some particular file format then ask the developer of the file format/write it yourself/find someone to write it for you. Don't just randomly modify config files and hope.



[ Reply to This | # ]

Use the RichText.mdimporter instead
Authored by: jaydisc on May 25, '05 09:27:30PM

I understand your concerns... and therefore suggest modifying /System/Library/Spotlight/RichText.mdimporter/ as all that plugin is looking for is simple text.



[ Reply to This | # ]
Use the RichText.mdimporter instead
Authored by: schwa on May 25, '05 09:47:39PM

Well I've had a quick sniff around Apple's Source Code mdimporter and all it seems to do is copy the contents of the file into the "kMDItemTextContent" attribute. This means it _should_ work for any kind of file. But of course I could be mistaken.

However the principal of my concern remains. You should not be modifying Info.plist settings for software you do not understand fully. And unless you're in possession of the source code you do NOT understand it enough to make these modifications without asking for trouble.



[ Reply to This | # ]
Use the RichText.mdimporter instead
Authored by: ppmax on May 26, '05 11:50:38AM

I think "asking for trouble" is a bit of an overstatement. As you can see from the UTI tree the SourceCode importer deals with text, and Python and PHP (and HTML for that matter--which does get indexed) is text. I believe the only concern is that Apple could update the importer and overwrite any changes made to the plist file.

Question: Since you wrote an importer for python you may have an answer for the question I posted above: how to deal with files have kMDItemContentType as "dyn.*"



[ Reply to This | # ]
Use the RichText.mdimporter instead
Authored by: schwa on May 26, '05 05:14:05PM

I think "asking for trouble" is a bit of an overstatement. As you can see from the UTI tree the SourceCode importer deals with text, and Python and PHP (and HTML for that matter--which does get indexed) is text. I believe the only concern is that Apple could update the importer and overwrite any changes made to the plist file.

Yeah but HTML and PHP and Python are dissimilar enough that one parser probably won't be able to parse all three. Heck why not get the SourceCode file to parse MS Word files - it's all just bytes at the end of the day... Clearly that isn't correct. I'm not saying that changing the Info.plist around will necesarily break anything - in fact it is pretty clear that SourceCode importer can probably do a very basic import on any text file. But the point is - you're taking a risk.

Question: Since you wrote an importer for python you may have an answer for the question I posted above: how to deal with files have kMDItemContentType as "dyn.*"

Don't worry about dyn.* files. They're dynamic UTI types and should not be persistent between reboots. Not sure exactly what causes them (possibly caused by files that are not matched by any UTI description). But Spotlight is smart enough to realise that the dynamic UTI type is actually mapped to a real UTI type.

[ Reply to This | # ]
Use the RichText.mdimporter instead
Authored by: ppmax on May 26, '05 07:59:18PM
Thanks for the reply. Regarding files with type dyn.*: I want to index my httpd.conf file and a few other "generic" system files. mdls /etc/httpd/httpd.conf returns:

/etc/httpd/httpd.conf -------------
kMDItemAttributeChangeDate     = 2005-05-11 08:54:05 -0700
kMDItemContentCreationDate     = 2005-03-20 15:08:49 -0800
kMDItemContentModificationDate = 2005-03-20 15:08:49 -0800
kMDItemContentType             = "dyn.ah62d4rv4ge80g55sq2"
kMDItemContentTypeTree         = ("public.data", "public.item")
kMDItemDisplayName             = "httpd.conf"
kMDItemFSContentChangeDate     = 2005-03-20 15:08:49 -0800
kMDItemFSCreationDate          = 2005-03-20 15:08:49 -0800
kMDItemFSCreatorCode           = 0
kMDItemFSFinderFlags           = 0
kMDItemFSInvisible             = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "httpd.conf"
kMDItemFSNodeCount             = 0
kMDItemFSOwnerGroupID          = 0
kMDItemFSOwnerUserID           = 0
kMDItemFSSize                  = 38334
kMDItemFSTypeCode              = 0
kMDItemID                      = 28530
kMDItemKind                    = "Document"
kMDItemLastUsedDate            = 2005-03-20 15:08:49 -0800
kMDItemUsedDates               = (2005-03-20 15:08:49 -0800)
Provided I add /etc/httpd to the Spotlight index path list, how do I get SL to index this file? What importer will be used? AFAIK Spotlight needs a recognized extension, or a recognized file type to index. Any suggestions?

[ Reply to This | # ]
Use the RichText.mdimporter instead
Authored by: schwa on May 27, '05 02:03:01AM
From the terminal:

mdimport -d2 /etc/httpd/httpd.conf

If you get NO output it means that Spotlight _cannot_ import the file. Which means it could either have no valid mdimporter which claims to be able to understand that file - or it might not be able to index it because Spotlight has been configured not to index files in /etc

You can fix the later by modifying the hidden Spotlight config files - other hints show how to do that. Again I wouldn't recommend it (but I'm dull & boring).

If you're sure Spotlight should be able to import the file (because you have modified the config files) then you also need to write an mdimporter to import config files. ;-)

Of course you could modify SourceCode.mdimporter to handle .conf files but that will be a bit tricky.

But as a favour to you personally (because we go back so far now) I'll take my Python importer and use it to create a .conf file importer. Expect it within the next 24hours or so. Check out http://toxicsoftware.com/blog/ for progress. Feel free to continue this thread on my blog.



[ Reply to This | # ]

Use the RichText.mdimporter instead
Authored by: schwa on May 27, '05 06:31:03PM
Use the RichText.mdimporter instead
Authored by: ppmax on May 28, '05 11:18:18AM

Wow--thanks. Im downloading now and will try ASAP.

A suggestion: I know how to modify my spotlight config (/.Spotlight-V100/_rules.plist) but you might want to incude a readme describing how to modify this file to get the importer to work.

Thanks much!



[ Reply to This | # ]
Use the RichText.mdimporter instead
Authored by: schwa on May 31, '05 03:29:15PM

There's a new version online now that imports .conf, .log and .plist.



[ Reply to This | # ]