PHP mysql 不匹配单个单词

标签 php mysql

我正在尝试在 php 中为数字图书馆应用程序实现一个简单的推荐引擎。推荐引擎使用关键字来提出建议。问题是,除非输入的关键字完全相同,否则它不会推荐书籍。例如,A书关键字=“货币投资”,B书关键字=“货币交易”;如果我读了书 A,它不会向我推荐书 B,因为关键字略有不同。我希望它推荐的书籍只要关键字中至少有一个匹配的单词即可。

function getrecommendations(){
    global $conn;
    $sql = "SELECT keywords FROM books WHERE Id = ".$_GET['id']."";
    $result = mysqli_query($conn,$sql);
    $row = mysqli_fetch_array($result);
    $keyword = preg_match_all('/([a-zA-Z]|\xC3[\x80-\x96\x98-\xB6\xB8-\xBF]|\xC5[\x92\x93\xA0\xA1\xB8\xBD\xBE]){4,}/', $row['keywords'],$match_arr);
    $keyword = $match_arr[0];        
    $i = 0;
        $query ="";
        foreach($keyword as $value)
        {
          if($i==0)
          {
              $query = "'%$value%'";
              $i=1;
          }
            else
            {
         $query = $query . " AND keywords LIKE '%$value%'";  
            }
        }
        $key = $query;
        $sql = "SELECT * FROM books WHERE keywords LIKE $key";
        $result = query($sql);
        confirm($result);
        $no=mysqli_num_rows($result);
        if($no==0){

        }else{
        echo "<p><b><big><big>RECOMMENDED FOR YOU</big></big></b></p>";
        echo "<hr>";
        while($row = mysqli_fetch_array($result))
        {
$book = <<<MYHERODOC
<div class="col-lg-3 col-md-6 col-sm-6">
            <div class="container2">
                <img style="height:383px; width:254px" src="img/pic_book/{$row['pathtoimage']}" alt="Avatar" class="image img-responsive">
                <div class="overlay">
                    <div class="text" style="text-transform:capitalize"><b>{$row['Title']}</b><br><small><small><span style="text-transform:lowercase">by</span> {$row['Author']}</small></small>
                        <a class = "btn overlay-btn" href="book.php?id={$row['Id']}"> Preview </a>
                    </div>
                </div>
            </div><br>
            <a href="book.php?id={$row['Id']}" style="color:#cdae51; text-transform:uppercase">{$row['Title']}</a><br>
            <p style="color:#262626">{$row['Author']}</p>     
        </div>
MYHERODOC;
echo $book;
        } 
    }
}

最佳答案

$title_words = explode(" ", $book_title);

这样您就可以用单词分割完整的书名。因此您可以匹配任何书名中的任何单词。

关于PHP mysql 不匹配单个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49614673/

相关文章:

php - 在 PHP PDO-ODBC、unixODBC 和 FreeTDS 中使用类型化绑定(bind)参数

PHP - 两个服务器登录 : localhost/localhost:3306 - control user has no access

PHP/MySQL 卫生问题

phpstorm MySQL-方言字符串构建与PHP

mysql - 优化mysql查询-select内连接和exists

javascript - 在全局服务器中提交ajax后清除表单值

javascript - 为什么当我尝试在 PHP 中运行此 JS 代码时没有任何反应?

php - PHP中的htmlentities但保留html标签

带有 SQL Server 和准备好的语句的 PHP PDO

php - 有没有更好的方法来获取限制为 1 的随机记录