沃梦达 / 编程问答 / php问题 / 正文

如何在Sphinx中查询精确匹配的短语?

How to query Sphinx for an exact matching phrase?(如何在Sphinx中查询精确匹配的短语?)

本文介绍了如何在Sphinx中查询精确匹配的短语?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

看起来Sphinx正在逐字搜索文档。我不知道如何在文档中搜索准确的短语。我试了SPH_MATCH_ALLSPH_MATCH_PHRASE,但都是逐字搜索文档。我正在我的PHP应用程序中使用它。

如何查询Sphinx以匹配准确的字符串?

以下是我的代码:

$sphinx = new SphinxClient();
$mode = SPH_MATCH_PHRASE;
$sphinx->setServer('127.0.0.1', 9312);
$sphinx->setLimits(0,1);
$sphinx->setMaxQueryTime(5000);
$sphinx->setMatchMode($mode);
$sphinx->setFieldWeights(array('name' => 100));
$sphinx->setArrayResult(true);

$result = $sphinx->query('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
print_r($result);

返回结果如下:

Array (
    [error] =>
    [warning] =>
    [status] => 0
    [fields] => Array (
        [0] => name
        [1] => company
        [2] => image
        [3] => price
    )
    [attrs] => Array ()
    [total] => 0
    [total_found] => 0
    [time] => 0.000
    [words] => Array (
        [lorem] => Array (
            [docs] => 0
            [hits] => 0
        )
        [ipsum] => Array (
            [docs] => 0
            [hits] => 0
        )
        [dolor] => Array (
            [docs] => 0
            [hits] => 0
        )
        [sit] => Array (
            [docs] => 0
            [hits] => 0
        )
        [amet] => Array (
            [docs] => 0
            [hits] => 0
        )
        [consectetur] => Array (
            [docs] => 0
            [hits] => 0
        )
        [adipiscing] => Array (
            [docs] => 0
            [hits] => 0
        )
        [elit] => Array (
            [docs] => 0
            [hits] => 0
        )
    )
)

如您所见,Sphinx正在逐字搜索文档...

推荐答案

最佳方法是使用SPH_MATCH_EXTENDED2语法并将查询括在双引号中。

$sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
$sphinx->Query('"Lorem ipsum dolor"'); 

Extended syntax

这篇关于如何在Sphinx中查询精确匹配的短语?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何在Sphinx中查询精确匹配的短语?

基础教程推荐