我使用Lucene索引我的數據庫,然後在特定字段(字段名稱:關鍵字)上執行詞組搜索。 目前我使用下面的代碼: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}
此代碼工作正常進行制止,但現在我也想擴大我的查詢做同義詞搜索一樣,如果我輸入「人」,我的Lucene索引有一個條目「男性「,它仍然能夠給我這一擊。 我試圖在第1行添加上面的代碼query=SynExpand.expand(userQuery,
但它沒有給我任何結果。 我也想介紹拼寫檢查,如果我輸入「不可信」而不是「難以置信」,它仍然會給我一個結果。
searcher, analyze,"keyword",serialVersionUID);
我不知道爲什麼同義詞擴展不適合我,以及如何做拼寫檢查。請如果有人能指導我,我會非常感激。
謝謝!
鏈接到@ffriend引用的示例http://subversion.assembla.com/svn/LuceneInAction/LuceneInAction/src/lia/analysis/synonym/ –