Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);
IndexSearcher indexSearcher;
File file = new File("/sdcard/index/");
Directory indexDir = FSDirectory.open(file);
indexSearcher = new IndexSearcher(indexDir, true);
QueryParser parser = new QueryParser(Version.LUCENE_29, "DIG", analyzer);
Query query = parser.parse(mEdit.getText().toString());
ScoreDoc[] hits = indexSearcher.search(query, null, 1000).scoreDocs; 嗨,这是我在2.9.2版本中的lucene文本搜索代码。我想为lucene snowball 2.9.2编写代码,以便如果我将搜索文本“游戏”,那么它将搜索包含“游戏”的文档,也将搜索“游戏”的文档。请告诉我怎么写这个的代码。我可以在Lucene中搜索文本,但我想在lucene snowball 2.9.2中这样做
发布于 2011-12-15 23:27:33
而不是
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);
您可以使用
Analyzer analyzer = new SnowballAnalyzer(Version.LUCENE_29, "English");
这样,您将在幕后使用English Stemmer。记住在索引时间和搜索时间使用相同的分析器,以避免混淆。当你使用词干分析器时,在Lucene索引中,你存储的不是确切的输入词,而是词干的词。
See Javadoc here for 2.9.在新版本的Lucene中,你有像EnglishAnalyzer这样的每种语言的分析器(更好的类型安全性,因为你不需要传入String,而是类名)。
https://stackoverflow.com/questions/8517885
复制相似问题