[英]Sphinx - Search phrase in comma separated string
在Sphinx
,我想用逗号分隔的字符串搜索短语。
例如,用逗号分隔的字符串是Very Expensive,Luxury,Romance,Trendy
。
短语"Expensive"
不匹配此记录,但短语"Very Expensive"
应匹配。
尝试在sphinx配置文件中设置“ 短语边界”选项,并再次旋转索引器,但是输出没有变化。
phrase_boundary = U+002C # comma
phrase_boundary_step = 100
我将Sphinx 2.0.5
和PHP
用作脚本语言。
我如何解决这个问题,(为标签建立索引)是使用特定的分隔符。 例如,将其索引为
_SEP_ Very Expensive _SEP_ Luxury _SEP_ Romance _SEP_ Trendy _SEP_
现在可以运行查询"_SEP_ Very Expensive _SEP_"
(带引号),它将很好地匹配,但是查询"_SEP_ Expensive _SEP_"
将不匹配:)
(可以在sql_query
动态构建它,例如
... , CONCAT('_SEP_ ',REPLACE(labels,',',' _SEP_ '),' _SEP_') AS labels, ...
(至少对于mysql数据源而言)
您可以使用扩展查询语法来使用field-start
和field-end
修饰符。 在这种情况下,您需要在索引时将用逗号分隔的字符串(“非常昂贵”,“豪华”等)分成单独的字段。
您的搜索查询将如下所示:
^Very Expensive$
-匹配整个字段
^Expensive$
-与整个栏位不符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.