Я - разработка предложить поле для моего поискового сервиса сайта. Я имею к полям поиска как они:
Visual Basic Enterprise Edition
Visual C++
Visual J++
Мой код:
Directory dir = Lucene.Net.Store.FSDirectory.GetDirectory("Index", false);
IndexSearcher searcher = new Lucene.Net.Search.IndexSearcher( dir,true);
Term term = new Term("nombreAnalizado", _que);
PrefixQuery query = new PrefixQuery(term);
TopDocs topDocs = searcher.Search(query, 10000);
Этот код работает хорошо в этом случае:
"Предприятие" будет соответствовать "Visual Basic Enterprise Edition"
Но "Предприятие E" ничему не соответствует.
Я удалил пробелы при индексации времени и когда пользователь ищет.
Спасибо.
Я думаю, вам следует использовать QueryParser и позволить ему вместо этого построить соответствующий объект Query использования чего-то особенного, например PrefixQuery.
В Java:
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "nombreAnalizado", new StandardAnalyzer(Version.LUCENE_CURRENT));
Query query = parser.parse(_que);
Убедитесь, что вы используете тот же анализатор, который вы использовали для индексации.