Lucene. Сетевой PrefixQuery

Я - разработка предложить поле для моего поискового сервиса сайта. Я имею к полям поиска как они:

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" ничему не соответствует.

Я удалил пробелы при индексации времени и когда пользователь ищет.

Спасибо.

1
задан Sam 26 November 2011 в 22:58
поделиться

1 ответ

Я думаю, вам следует использовать QueryParser и позволить ему вместо этого построить соответствующий объект Query использования чего-то особенного, например PrefixQuery.

В Java:

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "nombreAnalizado", new StandardAnalyzer(Version.LUCENE_CURRENT));
Query query = parser.parse(_que);

Убедитесь, что вы используете тот же анализатор, который вы использовали для индексации.

2
ответ дан 3 September 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: