在狮身人面像搜索中使用$(美元符号)

时间:2017-02-10 17:40:47

标签: c# sphinx

我正在尝试使用sphinx(v2.3.2-beta)为我的音乐相关网站设置全文搜索。

当用户搜索' kesha'时,他还必须找到' Ke $ ha'。 为此,我将此添加到我的charset_table:

U+0024->s, U+FF04->s, U+FE69->s

之后,' kesha'返回' Ke $ ha'的结果。 但是,当我搜索' ke $ ha'时,我没有得到任何结果。

我目前在C#中使用SphinxQL,并且我手动转义$ -sign。

    private string EscapeQuery(string query)
    {
        var builder = new StringBuilder(query);
        builder.Replace("\\", "\\\\");
        builder.Replace("-", "\\-");
        builder.Replace("+", "\\+");
        builder.Replace("$", "\\$");
        builder.Replace("!", "\\!");
        builder.Replace("@", "\\@");
        builder.Replace("~", "\\~");
        builder.Replace("\"", "\\\"");
        builder.Replace("/", "\\/");
        builder.Replace("(", "\\(");
        builder.Replace(")", "\\)");
        builder.Replace("*", "\\*");
        builder.Replace("<", "\\<");
        builder.Replace(">", "\\>");
        builder.Replace("=", "\\=");
        return builder.ToString();
    }

在查询日志中,我看到以下内容,因此我认为我的查询已正确转义:

SELECT artistid, artistname FROM artists WHERE MATCH('^ke\\$ha*') GROUP BY artistid LIMIT 0,2 OPTION ranker=sph04;
/* Fri Feb 10 18:21:37.764 2017 conn 44 real 0.000 wall 0.000 found 0 */

然而,我没有得到任何结果,而我想我也应该得到“Ke $ ha&#39;结果。

有人知道可能出现什么问题吗?

0 个答案:

没有答案