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

Sphinx - Search phrase in comma separated string

Sphinx 中,我想搜索以逗号分隔的字符串中的短语。

例如逗号分隔的字符串为Very Expensive,Luxury,Romance,Trendy.

短语 "Expensive" 不应匹配此记录,但应匹配短语 "Very Expensive"

尝试在 sphinx 配置文件中设置 Phrase Boundary 选项并再次旋转索引器,但输出没有变化。

phrase_boundary                 =  U+002C # comma
phrase_boundary_step            =  100

我正在使用 Sphinx 2.0.5PHP 作为脚本语言。

您可以使用 field-startfield-end 修饰符和 Extended query syntax。在这种情况下,您需要在索引时将逗号分隔的字符串("Very Expensive"、"Luxury" 等)分成单独的字段。

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

^Very Expensive$ - 匹配整个字段

^Expensive$ - 不匹配整个字段

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

_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 数据源)