0

假设我们有 4 种产品:

“iPhone 3g、iPhone 3gs、iPhone 4、iPhone 4s”

并为此使用文字形式:

iPhone 3g > ip3
iPhone 3gs > ip3s
iPhone 4 > ip4
iPhone 4s > ip4s

这需要在搜索“iPhone 3g”时只匹配 iPhone 3g,而不是 3gs

问题是:如果用户搜索“iPhone”,我应该找到所有 4 个版本。但!源文本中的“iPhone”将通过wordforms sphinx机制替换为CRC32我如何解决这个问题并在搜索“iPhone”时找到所有4个产品,或者如果搜索他只找到一个产品?

4

1 回答 1

0

不确定wordforms(也不exceptions是就此而言)会对此有所帮助。

但我相信你可以使用regexp_filter

http://sphinxsearch.com/docs/current.html#conf-regexp-filter

就像是

regexp_filter = iphone\ (\d\w*)\b => iphone ip\1

这实际上与上述词形进行了相同的转换,但也将 iphone 包含为单个词,因此可以单独匹配。

(我能看到的唯一轻微的皱纹,不知道如何使正则表达式替换不区分大小写 - 所以要么必须在搜索字符串中包含所有可能的拼写,要么为每个组合设置多个过滤器)

于 2013-07-26T12:05:34.550 回答