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.5
和 PHP
作为脚本语言。
您可以使用 field-start
和 field-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 数据源)
在 Sphinx
中,我想搜索以逗号分隔的字符串中的短语。
例如逗号分隔的字符串为Very Expensive,Luxury,Romance,Trendy
.
短语 "Expensive"
不应匹配此记录,但应匹配短语 "Very Expensive"
。
尝试在 sphinx 配置文件中设置 Phrase Boundary 选项并再次旋转索引器,但输出没有变化。
phrase_boundary = U+002C # comma
phrase_boundary_step = 100
我正在使用 Sphinx 2.0.5
和 PHP
作为脚本语言。
您可以使用 field-start
和 field-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 数据源)