gpt4 book ai didi

php - foreach 循环用于 bool 模式下的全文搜索

转载 作者:行者123 更新时间:2023-11-29 10:24:59 24 4
gpt4 key购买 nike

我有 php 代码,可以获取 names of toys来自words表并匹配 toys_text 中的这些单词toys领域表使用 bool 模式全文搜索并显示 names of toys对于 users以及网页上玩具和唯一用户的数量

玩具的名称可以是一个单词,也可以是单词的组合。我们想要从 toys 获取这些结果其中有toys_text包含 words 中单词组合的所有单词的字段表

(示例 - 如果 words 表有名为 blue car 的条目 - bluecar 都应出现在 toystoys_text 字段中以进行匹配)。数据库随着时间的推移而变化,新玩具的用户被添加,过时的玩具则被删除。

我在正确地将数组转换为字符串以输入 bool 全文搜索时遇到问题。我使用foreach循环并想要输出 +(blue) +(car) 但它只是将 +(car) 插入 bool 全文查询中。

回显$query1输出

`select COUNT(*) as 'count', COUNT(DISTINCT tw.screen_name) AS 'cnt' from 
tweets tw join users us on tw.user_id=us.user_id WHERE MATCH (tweet_text)
AGAINST (' +(car)' IN BOOLEAN MODE)`

虽然我希望查询输出为

`select COUNT(*) as 'count', COUNT(DISTINCT tw.screen_name) AS 'cnt' from 
tweets tw join users us on tw.user_id=us.user_id WHERE MATCH (tweet_text)
AGAINST ('+(blue) +(car)' IN BOOLEAN MODE)`

这是我的代码 -

<?php
$query = "SELECT * FROM words ORDER BY `words`.`words`
ASC";
$result = mysqli_query($con, $query);

$i = 1;
while($row = mysqli_fetch_array($result)){
$Word = $row['words'];
$WordsArr = explode(" ", $row['words']);
$query = "";

if(count($WordsArr) > 1){
foreach ($WordsArr as $value) {
$value1 = " +"."(".$value."*".")";
}
$query1 = "select COUNT(*) as 'count', COUNT(DISTINCT
t.name) AS 'cnt' from toys t WHERE MATCH (toys_text) AGAINST
('$value1' IN BOOLEAN MODE)";
}else{
$query1 = "select COUNT(*) as 'count', COUNT(DISTINCT t.name) AS
'cnt' from toys t WHERE
MATCH (toys_text) AGAINST ('$WordsArr[0]* IN BOOLEAN MODE')";
}
$Data1 = mysqli_query($con, $query1);
$total1 = mysqli_fetch_assoc($Data1);
?>
<tr>
<td><?php echo $i;?></td>
<td><?php echo $row['words'];?></td>
<td><a href="showtoys.php?word=<?php echo
urlencode($Word); ?>" target="_blank"><?php echo
$total1['count']; ?></a></td>
<td><a href="showtoys.php?keyword=<?php echo urlencode($Word);
?>" target="_blank"><?php echo $total1['cnt']; ?></a></td>
</tr>
<?php $i++;} ?>

最佳答案

你的问题是你没有连接字符串:

foreach ($WordsArr as $value) {
$value1 = " +"."(".$value."*".")";
}

应该是:

$value1 = '';
foreach ($WordsArr as $value) {
$value1 .= " +"."(".$value."*".")";
}

关于php - foreach 循环用于 bool 模式下的全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48476628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com