我正在使用查询按相关性排序结果。
有时它正在发挥作用:
SELECT `baslik` , MATCH (baslik) AGAINST ('"konut ev"') as rank
FROM (`kategoriler`)
WHERE MATCH (baslik) AGAINST ('+merkez*' in boolean mode)
AND `ozellik` = 0 ORDER BY `rank` desc
结果:
baslik rank desc
Merkez Mahalle Satılık Ev K... 1.43379247188568
Merkez Mahalle Satılık Ev K... 1.43379247188568
Merkez Mahalle Satılık Ev Kon... 1.43379247188568
Merkez Mahalle Kiralık Ev Kon... 1.43379247188568
Merkez Mahalle 0
Merkez Mahalle Satılık 0
Merkez Mahalle Satılık ... 0
但有时它不是:
SELECT `baslik` , MATCH (baslik) AGAINST ('"Satılık ev"') as rank
FROM (`kategoriler`)
WHERE MATCH (baslik) AGAINST ('+merkez*' in boolean mode)
AND `ozellik` = 0 ORDER BY `rank` desc
结果:
baslik rank
Merkez Mahalle 0
Merkez Mahalle Satılık 0
Merkez Mahalle Satılık ... 0
Merkez Mahalle Satılık ... 0
Merkez Mahalle 0
Merkez Mahalle Satılık 0
Merkez Satılık Ev K... 0
可能是什么原因?以及如何解决这个问题?
表格结构:
CREATE TABLE IF NOT EXISTS `kategoriler` (
`baslik` varchar(200) character set utf8 collate utf8_turkish_ci NOT NULL,
`id` mediumint(5) unsigned NOT NULL,
`kategori` tinyint(1) unsigned NOT NULL,
`sayi` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`baslik`),
FULLTEXT KEY `baslik` (`baslik`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
答案 0 :(得分:0)
使用它解决了Wrikken评论中的问题:
SELECT
baslik
,MATCH(baslik)AGAINST('“Satılıkev”'in BOOLEAN MODE)as rank FROM(kategoriler
)WHERE MATCH(baslik)AGAINST ('+ merkez *'在布尔模式下)ANDozellik
= 0 ORDER BYrank
desc