繁体   English   中英

Sphinx-用逗号分隔的字符串搜索短语

[英]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.5PHP用作脚本语言。

我如何解决这个问题,(为标签建立索引)是使用特定的分隔符。 例如,将其索引为

_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-startfield-end修饰符。 在这种情况下,您需要在索引时将用逗号分隔的字符串(“非常昂贵”,“豪华”等)分成单独的字段。

您的搜索查询将如下所示:

^Very Expensive$ -匹配整个字段

^Expensive$ -与整个栏位不符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM