2016-04-26 4 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 "| my n *
  • "my n" | "my n *" | my 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 index RECONFIGURE», но не думаю, что это поможет – barryhunter

Смежные вопросы