Ruby on rails 在字段的条件中思考类似Sphinx sql的查询
我曾经有过这些查询,但现在我正在尝试使用sphinx,我需要替换它们,但我找不到一种方法:Ruby on rails 在字段的条件中思考类似Sphinx sql的查询,ruby-on-rails,sphinx,thinking-sphinx,Ruby On Rails,Sphinx,Thinking Sphinx,我曾经有过这些查询,但现在我正在尝试使用sphinx,我需要替换它们,但我找不到一种方法: p1 = Product.where "category LIKE ?", "#{WORD}" p2 = Product.where "category LIKE ?", "#{WORD}.%" product_list = p1 + p2 我在“类别”字段中搜索名为“产品”的模型;我需要一种方法来替换斯芬克斯中的“#”和“%”。我对如何做到这一点有一个基本的想法,但这不起作用: Product.sea
p1 = Product.where "category LIKE ?", "#{WORD}"
p2 = Product.where "category LIKE ?", "#{WORD}.%"
product_list = p1 + p2
我在“类别”字段中搜索名为“产品”的模型;我需要一种方法来替换斯芬克斯中的“#”和“%”。我对如何做到这一点有一个基本的想法,但这不起作用:
Product.search conditions: {category: "('WORD' | 'WORD.*')"}
有几件事需要注意
- 如果要匹配前缀,请确保将
设置为1或更大(越小,越准确,但搜索速度越慢,索引文件越大)。此外,还需要将min\u prefix\u len
设置为true。这两种设置都属于enable_star
(这里有一些示例)config/thinking\u sphinx.yml
- 单引号在Sphinx搜索中没有任何用途,将被忽略-但我认为这不是您试图搜索的问题
- 但是,默认情况下,句号被视为单词分隔符。你可以用-来改变这一点,但这意味着所有字段中的所有句号都将被视为单词的一部分(比如,在句子末尾),所以我不推荐使用它
Product.search conditions: {category: WORD}
代表什么?知道%在LIKE中是通配符,但不是#的意思。@barryhunter它表示字符串的开头,我在sphinx中也找到了它,带有
^WORD$
以精确匹配我更改了文件thinking_sphinx.yml,我还更改了charset_表,因为WORD有点,它被视为@pat提到的分隔符,搜索正在进行:Product.search条件:{category:'WORD | WORD.*}