Как сделать нечеткий поиск в Lucene.net в asp.net?
У нас есть создание индекса lucene.net и поиск по этому URL-адресу http://sonyblogpost.blogspot.in/. но мы хотим вывод как следовать.
пример: если я ищу "Featured", я хочу показать связанные термины, такие как "Featured", "Featuring", "Feature".
Любой может помочь мне. Благодарю.
2 ответа
Для выполнения нечеткого поиска вы создадите MultiFieldQueryParser
Ниже приведен пример того, как это сделать:
var parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29, new[] { "field1", "field2" }, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));
Ваша версия Lucene.Net может отличаться.
Далее вы получите нечеткий запрос от парсера, например:
var query = parser.GetFuzzyQuery("fieldName", "featured", 0.7f);
Значение с плавающей точкой 0.7f
это минимальное сходство. Вы можете настроить этот номер, пока не получите желаемый результат. Число не может быть больше чем 1.0f
, Выполнение этого запроса с помощью Lucene Searcher даст вам ожидаемые результаты.
Вы, вероятно, ищете стеминг: создание слов на английском языке с помощью Lucene - ссылка на Java, но вы должны быть в состоянии определить соответствующие части API Lucene .Net.