Я использую Lucene для индексации своей базы данных, а затем выполняю поиск фразы по определенному полю (имя поля: ключевое слово).В настоящее время я использую следующий код:
String userQuery = request.getParameter("query");
//create standard analyzer object
analyzer = new StandardAnalyzer(Version.LUCENE_30);
Analyzer analyze=AnalyzerUtil.getPorterStemmerAnalyzer(analyzer);
//create File object of our index directory
File file = new File(LUCENE_INDEX_DIRECTORY);
//create index reader object
reader = IndexReader.open(FSDirectory.open(file),true);
//create index searcher object
searcher = new IndexSearcher(reader);
//create topscore document collector
collector = TopScoreDocCollector.create(1000, false);
//create query parser object
parser = new QueryParser(Version.LUCENE_30,"keyword", analyze);
parser.setAllowLeadingWildcard(true);
//parse the query and get reference to Query object
query = parser.parse(userQuery);
//********Line 1***********************
//search the query
searcher.search(query, collector);
hits = collector.topDocs().scoreDocs;
//check whether the search returns any result
if(hits.length>0){//Code to retrieve hits}
Этот код отлично работает для определения границ, но теперь я хочу также расширить свой запрос, чтобы выполнить поиск по синонимам, например, если я ввожу "Man", а в моем индексе Lucene есть запись"мужчина", он все еще мог бы дать мне это как хит.Я пытался добавить это в строке 1 в приведенном выше коде query=SynExpand.expand(userQuery,<br>
searcher, analyze,"keyword",serialVersionUID);
Но это не дает мне никакого результата.Я также хочу ввести проверку орфографии, где, если я введу «невероятно» вместо «невероятно», это все равно даст мне результат.
Я понятия не имею, почему расширение синонима не работает для меня и каксделать проверку орфографии. Пожалуйста, если кто-то может направить меня, я буду очень благодарен.
Спасибо!