Ответ 1
Store.Yes
означает, что значение поля будет сохранено в индексе
Store.No
означает, что значение поля НЕ будет сохранено в индексе
Store.Yes/No не влияет на индексацию или поиск с помощью lucene. Он просто говорит lucene, если вы хотите, чтобы он действовал как хранилище данных для значений в поле. Если вы используете Store.Yes, то при поиске значение этого поля будет включено в ваш результат поиска Документы.
Если вы храните свои данные в базе данных и используете только индекс Lucene для поиска, вы можете уйти с Store.No во всех своих полях. Однако, если вы используете индекс как хранилище, то вам понадобится Store.Yes.
Index.Tokenized
означает, что поле будет маркироваться при индексировании (вы получили его). Это полезно для длинных полей с несколькими словами.
Index.Un_Tokenized
означает, что поле не будет анализироваться и будет сохранено как одно значение. Это полезно для ключевых слов/однословных слов и некоторых коротких полей с несколькими словами.
Index.No
То, что он говорит. Поле не будет индексироваться и, следовательно, не может быть определено. Однако вы можете использовать Index.No вместе с Store.Yes для хранения значения, которое вы не хотите искать.
Index.No_Norms
То же, что и Index.Un_Tokenized, за исключением того, что несколько байтов будут сохранены, не сохраняя некоторые данные нормализации. Эти данные используются для повышения и нормализации длины поля.
Для дальнейшего чтения lucene javadocs бесценны (текущий API версии 4.4.0):
Для вашего последнего вопроса, почему ваш запрос ничего не возвращает, не зная больше о том, как вы индексируете это поле, я бы сказал, что это потому, что ваш определитель fieldName привязан только к строке "my". Чтобы выполнить поиск фразы "моя строка", которую вы хотите:
fieldName: "моя строка"
Ищите слова "my" и "string" в поле fieldName:
fieldName: (моя строка)