Lucene.Net PrefixQuery - PullRequest
       8

Lucene.Net PrefixQuery

1 голос
/ 23 апреля 2010

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

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 Ответ

2 голосов
/ 24 апреля 2010

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

В Java:

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

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

...