我試圖直接通過PHP獲取Windows索引搜索工作,因此我可以非常快速地搜索數千個文件中的文本。使用Windows索引和PHP
我有工作在Visual Basic中使用此腳本:
'To run this snippet, save it to a file and run it using cscript.exe from a command line.
'Running the .vbs file with Windows Script Host may cause dialog boxes to open for each item returned from the index.
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';"
objRecordSet.Open "SELECT System.ItemName FROM SYSTEMINDEX WHERE DIRECTORY='file:C:/folderIndexed' AND CONTAINS('myDemo') ORDER BY System.ItemName DESC", objConnection
Do Until objRecordset.EOF
Wscript.Echo objRecordset.Fields.Item("System.ItemName")
objRecordset.MoveNext
Loop
現在我想將它移植到PHP使用COM class的建議here但我收到此錯誤信息:
發出com_exception
來源:未知
說明:未知
我嘗試看起來像這樣:
<?php
$conn = new COM("ADODB.Connection") or die("Cannot start ADO");
$conn->Open("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';");
$recordset = new COM("ADODB.Recordset");
$keyword = 'a';
$sql = "SELECT filename, size, path
FROM SCOPE()
WHERE DIRECTORY='file:C:/folderIndexed' and CONTAINS('a')";
//-----------------> line of the error <-----------------
$recordset = $recordset->Open($sql, $conn);
foreach ($recordset as $obj) {
echo $obj->Fields->Item("System.filename")->Value, "\ n" ;
}
我在做什麼錯?
我使用PHP 5.5。我正在使用extension=php_com_dotnet.dll
在php.ini。 php_com_dotnet.dll文件放置在ext
文件夾中,詳情請參見extension_dir
值。
相關問題:
我不知道,但在MSDN文檔說'一定要使用第三個參數來COM()constructor.' –
@ Nouphal.M我沒有看到它。實際上,其他兩個參數是可選的:'COM :: COM(string $ module_name [,mixed $ server_name [,int $ codepage [,string $ typelib]]])''你可以看到'$ obj = new COM(「Application.ID」)'[here](http://uk3.php.net/manual/en/class.com.php)。 – Alvaro
在這裏檢查http://social.msdn.microsoft.com/Forums/en-US/63325b03-18f9-4506-a896-958ce55bde8a/query-windows-indexing-server-with-php?forum=sqldriverforphp –