我正在尝试使用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;结果。
有人知道可能出现什么问题吗?