Как Solr индексирует документы? - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в Solr и хочу точно понять, как он индексирует документы.

Допустим, у меня есть документ объемом 100 МБ (document1), полный текста.Текст не структурирован, это просто необработанный текст.Я отправляю этот документ в Solr для индексации.

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

word1 -> [document1]

word2 -> [document1]

и т. Д.

Теперь, если я хочу найти слово "word1", Solr выдаст мне весь документ размером 100 МБ, содержащий слово "word1" , , правильный ?

Пожалуйста, исправьте меня, если я ошибаюсь,Мне нужно точно понять, как это работает.

1 Ответ

0 голосов
/ 24 мая 2018

Вы описали большую часть индексации, все в порядке, по крайней мере, на высоком уровне.Причина, по которой вы получаете весь свой документ обратно - это потому, что ваше поле является сохраненным в вашей схеме Solr (по крайней мере, по умолчанию)

Это означает, что кромеиз списка сообщений word1 -> doc1, doc3 word2 -> doc2, doc3 и т. д.

Solr / Lucene также сохраняет исходное содержимое поля, поэтому оно сможет вернуть его вам.Вы можете либо явно отключить его, сказав stored=false в своей схеме, либо отфильтровав его в разделе fl и просто запросив fl=id (или что-то подобное)

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

...