Любой хороший способ обработки повторов при использовании индексации Lucene? - PullRequest
1 голос
/ 12 июля 2010

Я использую Lucene для индексации своих документов. В моем случае каждый документ имеет небольшой размер, но большое количество (~ 2 ГБ). И в каждом документе есть много повторяющихся слов или терминов. Мне интересно, правильно ли я делаю индексирование с помощью Lucene или какую предварительную обработку я должен выполнить для документа перед индексацией.

Ниже приведены несколько примеров моих документов (каждый столбец - это поле, первая строка - это имя поля, а начиная со 2-й строки каждая строка - это один документ):

ID     category     track     keywords
id1    cat1         track1    mode=heat treatment;repeat=true;Note=This is an apple
id2    cat1         track2    mode=cold treatment;repeat=true;Note=This is an orange

Я хочу проиндексировать все документы, выполнить поиск по 3 полям (категория, трек и ключевые слова) и вернуть уникальный идентификатор1.

Если я напрямую внесу это в указатель, повлияют ли повторяющиеся термины на эффективность поиска? У вас есть хорошая идея, как мне выполнять индексацию и поиск? Большое спасибо заранее.

1 Ответ

3 голосов
/ 12 июля 2010

Повторяющиеся термины могут повлиять на эффективность поиска, вынудив оценщика рассмотреть большой набор документов. Если у вас есть условия, которые не различают документы, я предлагаю предварительно обработать документы, чтобы удалить эти условия. Однако вы можете начать с индексации всего (скажем, для образца 10000-20000 документов) и посмотреть, как вы оцениваете актуальность и эффективность.

Исходя из того, как вы описываете это, вам нужно будет проиндексировать поля категории, дорожки и ключевых слов, возможно, используя KeywordAnalyzer для полей категории и дорожки. Вам нужно только сохранить поле идентификатора. Вы можете захотеть использовать собственный анализатор для поля ключевых слов или, в качестве альтернативы, предварительно обработать его перед фактической индексацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...