我使用php从mysql数据库发送和接收数据 我的查询是
SELECT
*
FROM (
SELECT
*
FROM
test
WHERE
MATCH(word) AGAINST('+hello ')
) AS fulltext_scan
WHERE
fulltext_scan.word REGEXP '^hello '
当我搜索英文单词时效果很好 但是当我搜索瑞典(ä,ö,å)字词时,出现了此错误
Got error 'nothing to repeat at offset 1' from regexp
我的连接中有array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")
,还有header('Content-Type: text/html; charset=utf-8');
当我直接从phpmyadmin测试查询时,即使使用瑞典语单词也能正常工作
我想使用AS
进行排序
SELECT pages.*, MATCH (head, body) AGAINST ('some words') AS
AND column REGEXP '^hello ' relevance,
MATCH (head) AGAINST ('some words') AS title_relevance
FROM pages
WHERE MATCH (head, body) AGAINST ('some words')
ORDER BY title_relevance DESC, relevance DESC
首先获得{hello}
如何在我的php页面中解决该问题?
答案 0 :(得分:0)
目标是什么?看看word
是否以 ögon
开头? 该任务可以非常有效地完成
WHERE word LIKE 'ögon %';
与INDEX(word)
一起使用,假设它是VARCHAR
,而不是TEXT
。
请提供SHOW CREATE TABLE test
。 CHARACTER SET
可能有问题。
SELECT HEX(word) ...
有什么用?如果您正确使用utf8 / utf8mb4,则它应显示C3B6 67 6F 6E
(不带空格)。
除非您使用的是MySQL 8.0,否则不要指望REGEXP
正确理解带重音的字母。
可能不需要多余的SELECT
;简单地做
SELECT ...
WHERE MATCH(word) AGAINST(...)
AND word LIKE ...
MATCH
将首先发生,然后LIKE
将检查MATCHed
的几行。