Homebrew fulltext search function (help)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I'm trying to make up for the lack full text searching in sqlite by passing the search off to php with sqlite_create_function. The parsing part works fine, but I'm a little lost with the scoring, if anyone perhaps a little better @ math than I am, may be of assistance!

The parsing code below, basically allows you to use a php function within a sqlite call. This pases matched content to a function, where the function needs to pass back a score:

sqlite_create_function($sDB, 'fulltext', 'fulltext_step',2);

function fulltext_step($title, $content) {

    $words = explode(' ', strtolower('php books'));
    $content = explode(' ',strtolower($content));
    $content = array_intersect($content,$words);
    foreach($content as $wordpos => $word) {
       print "$wordpos - $word<br>";
    }
}


sqlite_create_function($sDB, 'fulltext', 'fulltext_step',1);
$rs = sqlite_query($sDB,"select title fulltext(content) score from page where content like '%php%books%' order by score");


while($data = sqlite_fetch_array($rs)) {
   print "$data[score] $data[title]<br>";
}

So basically... the fulltext step builds and array, of how many times a word is matched, and at what word position (broken into an array for each word)... eg:

array('php'=>2,'php'=>30,'php'=>55)
array('books'=>3,'books'=>130);

The word php is at position 2, and the word books is at position 3... and so on.

What is the best way to return a single score for this page?

It's a bit confusing I suppose, but thanks!

As a side, on a 90meg text table, the parsing function above runs in about 0.061858177185059 ms... mysql does in about 0.0039310455322266 ms. I'm fine by that.

-Jason

--
Jason Morehouse
Vendorama - Create your own online store
http://www.vendorama.com

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux