Индексирование lucene документа с помощью различных анализаторов - PullRequest
1 голос
/ 11 февраля 2011

Можно ли индексировать документы lucene с помощью двух разных анализаторов? Как я должен поддерживать как регистрозависимый, так и регистронезависимый поиск. Так интересно, могу ли я использовать два анализатора для одного и того же документа.

writer.addDocument(doc,new StandardAnalyzer(Version.LUCENE_30)); writer.addDocument(doc,new custom_analyser);

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

Есть комментарии / идеи?

EDIT: @ Simon

Analyzer defaultAnalyzer = new StandardAnalyzer(Version.LUCENE_30);
PerFieldAnalyzerWrapper wrapper = new PerFieldAnalyzerWrapper(defaultAnalyzer);
wrapper.addAnalyzer("CaseSensitiveContents", new WhitespaceAnalyzer());

writer = new IndexWriter(FSDirectory.open(index), wrapper, true, 
                         new IndexWriter.MaxFieldLength(100))

doc.add(new Field("contents", parser.getReader(), TermVector.YES));
doc.add(new Field("CaseSensitiveContents", parser.getReader(), TermVector.YES));
writer.add(doc)

1 Ответ

2 голосов
/ 11 февраля 2011

Ваш пример кода добавит два почти идентичных документа (кроме их регистра) в ваш индекс.

Как насчет добавления двух полей в один документ, одно с учетом регистра, другое нет? Для этого вы можете использовать PerFieldAnalyzer.

...