Sphinx中使用CRC模式在单词之间进行通配符搜索



我使用带有CRC模式和min_infix_length=1的sphinx,并且我希望在关键字的字符之间使用通配符搜索。假设我的索引文件中有这样的数据:

name
-------
mickel
mick
mickol
mickil
micknil
nickol
nickal

当我搜索所有记录时,他们的名字以"mick"开头,以"l"结尾:

select * from all where match ('mick*l')

我预计结果应该是这样的:

name
-------
mickel
mickol
mickil
micknil

但什么也没回。我该怎么做?

  • 我知道我可以在dict=keywords模式下这样做,但出于某些原因,我应该使用crc模式。

  • 我还使用了"^"one_answers"$"运算符,但没有成功。

不能将'middle'通配符与CRC一起使用。dict=keywords的一个reaons,它可以支持的通配符更加灵活

使用CRC,它"预计算"所有通配符组合,并将它们作为单独的关键字注入索引中,例如

例如mickel作为文档单词,使用min_prefix_len=1indexer将创建单词:

mickel
mickel*
micke*
mick*
mic*
mi*
m*

作为索引中的单词,因此所有组合都可以匹配。如果使用min_infix_len,它还必须在开始时进行所有组合(因此(word_length)^2 + 1组合(

如果它必须在中间预先计算通配符的所有组合,那就要多得多了。特别是如果允许所有中间AND开始/结束组合(


尽管如此,您可以重写

select * from all where match ('mick*l')

作为

select * from all where match ('mick* *l')

因为使用min_infixlen,开始和结束将作为sperate单词进行索引。只是需要坚持两者都匹配。(尽管不知道如何让他们机器人匹配同一个单词!(

相关内容

  • 没有找到相关文章

最新更新