как написать код для снежного кома Lucene в Java - PullRequest
2 голосов
/ 15 декабря 2011
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;    

Привет, это мой код для поиска текста Lucene в версии 2.9.2.Я хочу написать код для lucene snowball 2.9.2, чтобы, если я буду искать текст «игра», он будет искать документ, содержащий «игру», а также документ «игры».Подскажите пожалуйста как написать код для этого.Я могу искать текст в Lucene, но я хочу сделать это для Lucene Snowball 2.9.2

1 Ответ

0 голосов
/ 15 декабря 2011

вместо

Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);

вы можете использовать

Analyzer analyzer = new SnowballAnalyzer(Version.LUCENE_29, "English");

Таким образом, за кулисами вы будете использовать Английский Stemmer . Не забудьте использовать один и тот же анализатор во время индексации и поиска, чтобы избежать путаницы. Когда вы используете stemmer, в индексе Lucene у вас будут храниться не точные входные слова, а слова с основами.

См. Javadoc здесь для 2.9. В более новых версиях Lucene у вас есть анализаторы для каждого языка, такие как EnglishAnalyzer (лучше безопасность типов, так как вы не передаете String, но скорее название класса).

...