我有一个mysql查询,其中我做了类似的事情:
Select FieldX from TableY where FieldX regexp '[0-9] VariableString'
问题是VariableString中的值可以包含许多具有同义词的不同单词。我已经在我的Sphinx索引中映射了这些,但我不能将substring_index或类似的东西提取出来。那么
Select FieldX from idx_TableY where Match('Bob')
会发现Bob Williams
或Robert Williams
它们不会从中提取“威廉姆斯”。
Mysql 'Williams'代表
Select Substring_index(FieldX,'Bob ',-1) where FieldX regexp '[[:<:]]Bob[[:>:]]'
但不适用于Robert Williams
。
有没有办法结合两者的功能或以某种方式使用regexp查询索引的全文而不仅仅是字段本身?
答案 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匹配。