如何使用部分单词在Sphinx结果中搜索?

时间:2013-04-19 12:08:26

标签: yii sphinx

我有一个表单,当我输入一个值时,我希望得到提交的结果;

如果我搜索fish并且我有fishing值,我想获取包含fish值的所有数据;

在我的代码中,只有输入完整的fishing字词,才能得到我需要的结果;

我正在搜索完整的表达式以及表达式中的每个单词;

$sphinx_search = Yii::app()->search;
        $sphinx_search->setSelect('*');

        $sphinx_search_final = '';

        $sphinx_search_query = trim($this->q);
        if (strlen($sphinx_search_query) > 0) {
            $sphinx_search_query = str_replace('-', ' ', $sphinx_search_query);
            $keys = explode(' ', $sphinx_search_query);
            foreach ($keys as $k => $key) {
                if ($key) {
                    $keys[$k] = $key;
                } else {
                    unset($keys[$k]);
                }
            }
            if (count($keys) > 0) {
                $sphinx_search_final = ' @(position_name,employer_name,employer_first_name,employer_last_name,employer_position) ' . $sphinx_search_query .
                        ' @(position_name,employer_name,employer_first_name,employer_last_name,employer_position) ' . implode('|', $keys);
            }
        }

1 个答案:

答案 0 :(得分:2)

启用min_prefix_lenmin_infix_len 获得明确的子串匹配能力。

还要检查enable_star,因为这会改变其行为的确切程度。


Alternativly也许阻止你正在寻找什么?通过morphology

启用