Add files via upload

This commit is contained in:
wibyweb 2023-09-18 18:21:43 -04:00 committed by GitHub
parent 6c6e10f754
commit cdde4409b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -202,11 +202,15 @@ else
$queryNoQuotesOrFlags = $queryNoQuotes;
$requiredword = '';
$flags = '';
$wordlen = 0;
$flagssetbyuser = 0;
$numRequiredWords = 0;
if(strpos($queryNoQuotes,'+') !== false || strpos($queryNoQuotes,'-') !== false){
$words = explode(' ', $queryNoQuotes);
$i = 0;
$queryNoQuotesOrFlags = '';
foreach ($words as $word) {
$wordlen = strlen($word);
if($i != 0 && $word[0] != '-' && $word[0] != '+'){
$queryNoQuotesOrFlags .= ' ';
}
@ -218,7 +222,11 @@ else
}
if ($word[0] == '-' || $word[0] == '+'){
$flags .= " $word";
}
$flagssetbyuser++;
if($word[0] == '+'){
$numRequiredWords++;
}
}
$i++;
}
}
@ -240,24 +248,18 @@ else
$longestWord = $word;
$longestwordelementnum = $wordcount;
}
$wordcount++;
if($word != ''){
$wordcount++;
}
}
}
//create another query where all compatible words are marked as keywords
//create another query where all compatible words from queryNoQuotesOrFlags are marked as keywords
$reqwordQuery = '';
$i=0;
$flagssetbyuser=0;
$numRequiredWords=0;
$wordlen=0;
foreach ($words as $word) {
$wordlen = strlen($word);
if(($word[0] == '+' || $word[0] == '-') && $wordlen > 3){
$flagssetbyuser++;
if($word[0] == '+'){
$numRequiredWords++;
}
}
if($i==0 && ($word[0] == '+' || $word[0] == '-') && $wordlen > 3){
$reqwordQuery .= "$word";
}
@ -280,6 +282,7 @@ else
}
$i++;
}
$reqwordQuery .= " $flags";
//Check if query contains a hyphenated word. MySQL is finicky about them. We will wrap quotes around hyphenated words that aren't part of a string which is already wraped in quotes.
if((strpos($queryNoQuotes,'-') !== false || strpos($queryNoQuotes,'+') !== false) && $urlDetected == false){
@ -326,10 +329,12 @@ else
$queryWithQuotesAndFlags = $query;
$reqwordQuery = $query;
}
if($queryOriginal == "c++" || $queryOriginal == "C++"){
$query = "\"c++\" +programming";
$queryWithQuotesAndFlags = $query;
$reqwordQuery = $query;
if(stripos($queryOriginal,"c++")!==false){// :) :( :) :(
$exactMatch=true;
$queryWithQuotesAndFlags .= " +programming";
if(strpos($queryOriginal," ")!==false && $longestWordLength>3){
$queryWithQuotesAndFlags .= " +$longestWord";
}
}
if($querywithrequiredword != ""){
@ -341,13 +346,13 @@ else
}
//perform full text search FOR InnoDB or MyISAM STORAGE ENGINE
if($exactMatch == false && $urlDetected==0 && strpos($query, ' ') == true && $flagssetbyuser != $wordcount){
if($exactMatch !== true && $urlDetected==0 && strpos($query, ' ') == true && $flagssetbyuser + $wordcount != $flagssetbyuser){
$outputFTS = mysqli_query($link, "SELECT id, url, title, description, body FROM windex WHERE MATCH(tags, body, description, title, url) AGAINST('$querytouse' IN BOOLEAN MODE) AND enable = '1' $additions ORDER BY CASE WHEN MATCH(tags) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) THEN 30 WHEN MATCH(title) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) THEN 20 WHEN MATCH(body) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) OR MATCH(description) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) THEN 15 WHEN MATCH(title) AGAINST('$reqwordQuery' IN BOOLEAN MODE) THEN 14 WHEN MATCH(title) AGAINST('$querytouse' IN BOOLEAN MODE) THEN 13 END DESC, id DESC LIMIT $lim OFFSET $offset");
}else{
$outputFTS = mysqli_query($link, "SELECT id, url, title, description, body FROM windex WHERE MATCH(tags, body, description, title, url) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) AND enable = '1' $additions ORDER BY CASE WHEN MATCH(tags) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) THEN 30 WHEN MATCH(title) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) THEN 20 END DESC, id DESC LIMIT $lim OFFSET $offset");
}
/* if($exactMatch == false && $urlDetected==0 && strpos($query, ' ') == true && $flagssetbyuser != $wordcount){
/* if($exactMatch == false && $urlDetected==0 && strpos($query, ' ') == true && $flagssetbyuser + $wordcount != $wordcount){
$outputFTS = mysqli_query($link, "SELECT id, url, title, description, body FROM windex WHERE MATCH(tags, body, description, title, url) AGAINST('$reqwordQuery' IN BOOLEAN MODE) AND enable = '1' $additions ORDER BY CASE WHEN MATCH(tags) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) THEN 30 WHEN MATCH(title) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) THEN 20 WHEN MATCH(body) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) OR MATCH(description) AGAINST('$queryWithQuotesAndFlags' IN BOOLEAN MODE) THEN 15 WHEN MATCH(title) AGAINST('$reqwordQuery' IN BOOLEAN MODE) THEN 14 WHEN MATCH(title) AGAINST('$query' IN BOOLEAN MODE) THEN 13 END DESC, id DESC LIMIT $lim OFFSET $offset");*/
if($urlDetected == 1)
@ -391,14 +396,14 @@ else
$body = $row[4];
$count++;
$lastID = $row[0];
if($exactMatch == false && ($flagssetbyuser == 0 || $flagssetbyuser == $wordcount))
$longestWord = str_replace("\'\'", "\'",$longestWord);
$queryNoQuotesOrFlags = str_replace("\'\'", "\'",$queryNoQuotesOrFlags);
if($exactMatch == false && ($numRequiredWords == 0 || $numRequiredWords + $wordcount == $numRequiredWords))
{
//remove the '*' at the end of the longest word if present
if(strpos($longestWord,'*') == true)
{
$longestWord = str_replace('*', "",$longestWord);
}
$longestWord = str_replace('*', "",$longestWord);
//first find an exact
if(strlen($requiredword) > 0){
@ -414,9 +419,9 @@ else
{
if($longestwordelementnum > 0)
{
if(strpos($words[0],'*') == true)//remove the '*' at the end of the query if present
$words[0] = str_replace('*', "",$words[0]);
$pos = stripos($body, $words[0]);
if(strpos($words[longestwordelementnum],'*') == true)//remove the '*' at the end of the query if present
$words[longestwordelementnum] = str_replace('*', "",$words[0]);
$pos = stripos($body, $words[longestwordelementnum]);
}
else if($longestwordelementnum == 0)
{