将Sphinx配置为索引破折号并使用和不使用它进行搜索

时间:2014-08-12 01:20:29

标签: ruby-on-rails sphinx

我有记录

Item id: 1, name: "wd-40"

如何配置Sphinx以匹配以下查询中的此记录:

Item.search("wd40")
Item.search("wd-40")

2 个答案:

答案 0 :(得分:1)

要回答您的标题问题,charset_table就是您想要的。

http://sphinxsearch.com/docs/current.html#charsets


但是,这并不能解决匹配这两个查询的查询,索引 - 不起作用,只是将索引编入索引。

相反,您可能需要ignore_chars

http://sphinxsearch.com/docs/current.html#conf-ignore-chars

答案 1 :(得分:0)

首先编制索引:

默认情况下,只有ascii字符由Sphinx索引;其他人被认为是单词分隔符。要解决此问题,您需要使用charset_table参数将短划线映射到短划线字符。

第二次搜索:

AFAIK,不可能让Sphinx像您要求的那样考虑两种搜索。但是,您可以使用以下内容:

# in Python, but I believe is understandable
query = word
if '-' in word:
    query += " | " + word.replace('-','')
Item.search(query)  # if word = 'wd-40', query = 'wd-40 | wd40'