2013-07-31 3 views
0

У меня есть коллекция RavenDB с примерно 1 миллионом документов. Одно поле в этих документах - это строка, содержащая имя домена. У меня есть бизнес-требование, позволяющее пользователям искать подстроку домена. Например, поиск «example» должен возвращать документы, в которых поле домена содержит example.com, example.net или www.example.com.RavenDB. Альтернатива ведущему шаблону?

Другим стандартным поиском будет расширение домена, такое как .com, которое вернет все .com-домены.

Небезопасно предполагать, что период всегда ограничивает поисковый запрос.

Я перехожу из среды MS SQL и пытаюсь обернуть голову вокруг этого без поддержки подстановочных знаков. Я понимаю, что Ворон может использовать подстановочные знаки, но такие поиски дороги и медленны. Я рассмотрел измененную версию поля, но это не соответствует требованию.

Является ли анализатор NGram ответом? Как я могу выполнить требования к поиску?

ответ

1

Для поддержки произвольных подпоследовательностей с помощью токенов да, ngram analyzer - правильный подход.

Пример, который вы предоставили, однако, не должен требовать его. Индексирование «www.example.com» должно вызывать «токен» с поисковым маркером (например, стандартный анализатор), поэтому в этом примере не нужно никаких подстановочных знаков.

0

Сохраните строку дважды, один нормальный, один раз обратный. Начать с поиска

+0

Я думал об этом, но в случае с www.example.com это не поможет, когда пример строки поиска. – Mark

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