Commit 688d451d99d8a5112d255f95c80f2deb2e053c5b

Authored by Conrad Vermeulen
1 parent 0d2e39b5

KTS-673

"The search algorithm needs some work"
Updated. Fixed an issue with the simple highlighting.

Committed By: Conrad Vermeulen
Reviewed By: Kevin Fourie

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7242 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 28 additions and 20 deletions
search2/search/expr.inc.php
... ... @@ -856,38 +856,46 @@ class TextQueryBuilder implements QueryBuilder
856 856 {
857 857 $offset=stripos($this->text, $word);
858 858  
859   - if ($offset == false)
  859 + if ($offset === false)
860 860 {
861 861 return array(false, false);
862 862 }
863 863  
864   - $text = substr($this->text, 0 , $offset);
865   -
866   - $lastsentence = strrpos($text, '.');
867   - if (!$lastsentence) $lastsentence=0;
868   -
869   - if ($offset - $lastsentence > $maxlen)
  864 + if ($offset == 0)
870 865 {
871   - $lastsentence = $offset - $maxlen;
  866 + $startOffset = 0;
872 867 }
  868 + else
  869 + {
  870 + $text = substr($this->text, 0 , $offset);
873 871  
874   - $text = substr($this->text, $lastsentence, $offset - $lastsentence);
  872 + $lastsentence = strrpos($text, '.');
  873 + if ($lastsentence === false) $lastsentence=0;
875 874  
876   - $wordoffset= strlen($text)-1;
877   - $words = $maxwords;
878   - while ($words > 0)
879   - {
880   - $text = substr($text, 0, $wordoffset);
881   - $foundoffset = strrpos($text, ' ');
882   - if ($foundoffset === false)
  875 + if ($offset - $lastsentence > $maxlen)
883 876 {
884   - break;
  877 + $lastsentence = $offset - $maxlen;
885 878 }
886   - $wordoffset = $foundoffset;
887   - $words--;
  879 +
  880 + $text = substr($this->text, $lastsentence, $offset - $lastsentence);
  881 +
  882 + $wordoffset= strlen($text)-1;
  883 + $words = $maxwords;
  884 + while ($words > 0)
  885 + {
  886 + $text = substr($text, 0, $wordoffset);
  887 + $foundoffset = strrpos($text, ' ');
  888 + if ($foundoffset === false)
  889 + {
  890 + break;
  891 + }
  892 + $wordoffset = $foundoffset;
  893 + $words--;
  894 + }
  895 + $startOffset = $lastsentence + $wordoffset;
888 896 }
889 897  
890   - $startOffset = $lastsentence + $wordoffset;
  898 +
891 899  
892 900 $nextsentence = strpos($this->text, '.', $offset);
893 901  
... ...