Как я могу выполнить нечеткий поиск всех слов, представленных в поиске Lucene.net - PullRequest
1 голос
/ 07 мая 2011

Я пытаюсь научить себя Lucene.Net для реализации на моем сайте. Я понимаю, как сделать почти все, что мне нужно, кроме одного вопроса. Я пытаюсь выяснить, как разрешить нечеткий поиск по всем поисковым запросам в строке поиска.

Так, например, если у меня есть документ со строкой The big red fox, я пытаюсь получить bag fix, чтобы соответствовать ему.

Проблема в том, что для выполнения нечетких поисков мне нужно добавить ~ к каждому поисковому запросу, введенному пользователем. Я не уверен в лучшем способе сделать это. Прямо сейчас я пытаюсь это по

string queryString = "bag rad";
queryString = queryString.Replace("~", string.Empty).Replace(" ", "~ ") + "~";

Первая замена происходит из-за того, что Lucene.Net выдает исключение, если строка поиска уже имеет ~, очевидно, она не может обработать ~~ во фразе. Этот метод работает, но кажется, что он станет грязным, если я начну добавлять нечеткие значения веса.

Есть ли лучший способ по умолчанию для всех слов учесть нечеткость?

1 Ответ

1 голос
/ 07 мая 2011

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

...