2016-04-26 92 views
1

我有一个短语“我的名字是鲍勃”。我想通过查询“我的n”来匹配它。sphinx:如何搜索带有通配符的短语?

我的查询应该如何?我应该配置什么配置?

min_prefix_len和min_prefix_len没有给出任何期望的结果。

我将min_word_len设置为2,但将其更改为1也没有帮助。

expand_keywords 1/2没有区别。

这里是我的指标配置:

index track 
{ 
    source     = track 
    path     = /var/lib/sphinx/track 
    min_word_len   = 1 
    docinfo     = extern 
    mlock     = 1 
    morphology    = none 
    expand_keywords   = 1 
} 

我试着查询:

  • “我的N *”
  • “我的N” *
  • 我ñ
  • “我n“|我的n *
  • “my n”| “我的n *”|我的n *

无论如何,我无法匹配“我的名字......”。

回答

3
min_word_len = 1 
min_prefix_len = 1 
expand_keywords = 0 

需要min_prefix_len来启用通配符搜索。但是想要关闭expand_keywords,因为这会使所有关键字都具有通配符。

然后可以做

"my n*" 
+0

如果我有一个RT指数和编辑到上述我的sphinx.conf,然后做的searchd --stop,searchd的(重启),我应该能够查询在哪里匹配('wor *')并获得'单词'后退?目前没有发生,我想知道如果我错过了一步。 – themistoklik

+0

索引需要重新创建。我不认为可以在活动索引上更改这些设置。对于“索引器”创建的索引,可以使用它重新创建索引。对于RT索引,您将不得不删除它,更改设置,然后再次重新插入所有数据。有“ALTER RTINDEX索引RECONFIGURE”,但不认为它会有所帮助 – barryhunter