如何使用 Sphinx 按 URL 进行搜索?
How to search by URL using Sphinx?
我在 Sphinx 中有索引。索引中的字段之一是 URL。它包含例如下一个值:
(1) http://u24.ru/news/38417/v-centre-chelyabinska-muzhchina-popytalsya-pereplyt-reku?rss
(2) https://meduza.io/feature/2017/07/10/islamskoe-gosudarstvo-vybili-iz-mosula-chto-budet-dalshe
(3) https://stolica-s.su/sport/athletics/89078
我如何尝试通过 url 进行搜索(部分代码):
$query = $this->manager->makeQuery()
->select(['id'])
->from(['content']);
$url = str_replace(
['=', '&', '?', '-', '%'],
[' ', ' ', ' ', ' ', ' '],
'http://www.ruscur.ru/themes/0/00/70/7020.shtml?news/0/10/43/104359'
);
$url = $query->escapeMatch($url);
$query->match('url', $url);
var_dump($query->execute()->fetchAllAssoc()); // empty
有没有不用全文搜索就可以用 Sphinx 搜索的方法?
您可以对 URL 进行散列并存储,然后通过散列进行比较:
$query = $this->manager->makeQuery()
->select(['id'])
->from(['content'])
->where('hash', '=', Hasher::hash($url));
我在 Sphinx 中有索引。索引中的字段之一是 URL。它包含例如下一个值:
(1) http://u24.ru/news/38417/v-centre-chelyabinska-muzhchina-popytalsya-pereplyt-reku?rss
(2) https://meduza.io/feature/2017/07/10/islamskoe-gosudarstvo-vybili-iz-mosula-chto-budet-dalshe
(3) https://stolica-s.su/sport/athletics/89078
我如何尝试通过 url 进行搜索(部分代码):
$query = $this->manager->makeQuery()
->select(['id'])
->from(['content']);
$url = str_replace(
['=', '&', '?', '-', '%'],
[' ', ' ', ' ', ' ', ' '],
'http://www.ruscur.ru/themes/0/00/70/7020.shtml?news/0/10/43/104359'
);
$url = $query->escapeMatch($url);
$query->match('url', $url);
var_dump($query->execute()->fetchAllAssoc()); // empty
有没有不用全文搜索就可以用 Sphinx 搜索的方法?
您可以对 URL 进行散列并存储,然后通过散列进行比较:
$query = $this->manager->makeQuery()
->select(['id'])
->from(['content'])
->where('hash', '=', Hasher::hash($url));