Nucleus/SQLite

SQLite-3

2006年3月7日

Nucleus SQLite化計画の現在の進行状況。

現在の一番大きな問題点は、記事の検索時に起きる。以下のようなエラーが。
Warning: sqlite_query(): near "(": syntax error 
in /homepage/sqlite/nucleus/sqlite/sqlite.php on line 104

SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as 
authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as 
authorurl, c.cname as category, i.icat as catid, i.iclosed as closed, match (ititle,ibody,imore) against (' search-query ') 
as score FROM nucleus_item as i, nucleus_member as m, nucleus_category as c WHERE 
i.iauthor=m.mnumber and i.icat=c.catid and i.idraft=0 and i.iblog in (1) and i.itime<="2006-03-08 02:15:09" 
and match (ititle,ibody,imore) against ('search-query') > 0 ORDER BY score DESC LIMIT 0,50

『match () against ()』 は、SQLiteでは対応してないらしい。これを、『like '%search-quert%'』のように書き換えないといけないようだ。次の例は、一つの解決策。
SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, 
m.mrealname as authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, 
m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed FROM nucleus_item as i, nucleus_member as m, nucleus_category as c WHERE i.iauthor=m.mnumber and i.icat=c.catid and i.idraft=0 
and i.iblog in (1) and i.itime<=\"2006-03-08 03:35:02\" and (ititle like '%query-search%' or ibody like 
'%query-search%' or imore like '%query-search%') "
(追記)SQLite クエリーのユーザ関数の定義『sqlite_create_function()』で解決!

プラグイン対応の問題は、
    function event_PreAddPlugin(&$data){
        $file=$data['file'];
        echo "event_PreAddPlugin: $file\n";
    }

が使えそう。ここで$fileに、『NP_ScriptedForm』の様な物が得られる。このevent_PreAddPluginで、phpファイルの『mysql_xxxx()』を『sqlite_mysql_xxxx()』に書き換えればよいはずだ。

コメント

コメントはありません

コメント送信