Индексация Lucene: Хранилище и режимы индексации объяснены

Я думаю, что все еще не понимаю lucene индексация опций.

Следующие опции

  • Store.Yes
  • Store.No

и

  • Index.Tokenized
  • Index.Un_Tokenized
  • Index.No
  • Index.No_Norms

Я действительно не понимаю опции хранилища. Почему Вы когда-либо хотели бы НЕ сохранить свое поле?
Маркирование разделяет содержание и удаляет шумовые слова/разделители (как "и", "или" и т.д.)
У меня нет подсказки, каковы нормы могли быть. Как маркируемые значения хранятся?
Что происходит, если я храню значение "моя строка" в "имени поля"? Почему не делает запроса

fieldName:my string

возвратить что-нибудь?

44
задан 柯鴻儀 5 September 2019 в 09:11
поделиться

1 ответ

Хранилище. Да

Средства, что значение поля будет сохранено в индексном

Хранилище. Никакой

Средства, что значение поля будет НЕ быть сохраненным в индексном

Хранилище. Да/Нет не влияет на индексацию или поиск с lucene. Это просто говорит lucene, если Вы хотите, чтобы это действовало как хранилище данных для значений в поле. Если Вы используете Хранилище. Да, тогда когда Вы ищете, значение того поля будет включено в Ваши Документы результата поиска.

, Если Вы храните свои данные в базе данных и только используете индекс Lucene для поиска, тогда можно сойти с рук Хранилище. Нет на всех Ваших полях. Однако, если Вы будете использовать индекс в качестве устройства хранения данных также, тогда Вы захотите Хранилище. Да.

Индекс. Маркируемый

Средства, что поле будет маркироваться, когда это индексировало (Вы получили тот один). Это полезно для длинных полей с несколькими словами.

Индекс. Средства Un_Tokenized

, что поле не будет проанализировано и будет сохранено как единственное значение. Это полезно для ключевое слово/отдельное слово и некоторые короткие поля многословные.

Индекс. Никакой

Точно, что это говорит. Поле не будет индексировано и поэтому недоступное для поиска. Однако Вы можете Индекс использования. Нет наряду с Хранилищем. Да для хранения значения, что Вы не хотите быть доступными для поиска.

Индекс. No_Norms

То же как Индекс. Un_Tokenized за исключением этого несколько байтов будет сохранен, не храня некоторые данные Нормализации. Эти данные - то, что используется для нормализации длины поля и повышения.

Для дополнительных материалов для чтения, lucene javadocs являются бесценными (текущая версия 4.4.0 API):

Для Вашего последнего вопроса, о том, почему не возврат Вашего запроса чего-либо, не зная больше о том, как Вы индексируете то поле, я сказал бы, что это - потому что Ваш спецификатор имени поля только присоединен к 'моей' строке. Чтобы сделать поиск фразы "моя строка", Вы хотите:

имя поля: "моя строка"

А ищет обоих слова "мой" и "строка" в поле имени поля:

имя поля: (моя строка)

84
ответ дан Alberto 26 November 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: