将Sphinx与MySql Regex结合使用?

时间:2016-07-16 18:07:29

标签: mysql regex sphinx

我有一个mysql查询,其中我做了类似的事情:

Select FieldX from TableY where FieldX regexp '[0-9] VariableString'

问题是VariableString中的值可以包含许多具有同义词的不同单词。我已经在我的Sphinx索引中映射了这些,但我不能将substring_index或类似的东西提取出来。那么

Select FieldX from idx_TableY where Match('Bob')

会发现Bob WilliamsRobert Williams它们不会从中提取“威廉姆斯”。

Mysql 'Williams'代表

Select Substring_index(FieldX,'Bob ',-1) where FieldX regexp '[[:<:]]Bob[[:>:]]'

但不适用于Robert Williams

有没有办法结合两者的功能或以某种方式使用regexp查询索引的全文而不仅仅是字段本身?

1 个答案:

答案 0 :(得分:0)

&#39;提取&#39;你说的,应该真的只是在应用程序本身完成。 Sphinx将返回完整匹配的文本字段。

然后应用程序本身可以只提取它想要的部分(类似于使用Substring_index的例子)

<?php
$r = mysql_query("Select FieldX from idx_TableY where Match('Bob')");
while($row=mysql_fetch_assoc($r)) {
   $v = preg_replace('/\d+\s+/','',$row['FieldX']);
   print "$v\n";
}

或类似的。可以根据需要定制preg_replace匹配。