Solr - это общий поисковый сервер предприятия. Он ничего не знает о файлах или о том, откуда поступают данные, которые он индексирует. Вы будете делать это самостоятельно.
Схема (schema.xml) определяет, какие поля индексируются. Когда вы разрабатываете свою схему, вы должны принимать решения о том, что хранится и каким образом.
Если вы хотите, чтобы имена файлов были возвращены, вам нужно будет вручную добавить их в свой индекс, сначала предоставив поле в своей схеме, а затем заполнив это поле каждый раз, когда вы добавите что-то в свой индекс.
Возможно, вы не хотите, чтобы токенизатор указывал ваше имя файла, если вы не хотите его искать. Если ваше имя файла содержит полный путь, его можно считать уникальным, и вы можете использовать его как свой идентификатор.
Если вы добавите его через xml, все, что вам нужно, это новое поле в вашем списке документов, например.
<doc>
...
<field name="filename">/some/path/basename.extension</field>
...
</doc>
Если вы используете solrj, это будет выглядеть примерно так:
HttpSolrServer server = new HttpSolrServer(host);
SolrInputDocument doc = new SolrInputDocument();
doc.addField("filename", document.getFilename());
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
docs.add(doc);
server.add(docs);
Пожалуйста, покажите нам свою схему и рассказать нам больше о том, как файлы индекса и запрашиваются. В противном случае вам будет сложно помочь. Спасибо – phisch
Спасибо за ответ! Схема - это пример схемы. Я проиндексировал файлы, используя post.jar. Я запросил solr через клиента solrj. Я получил результаты, что хочу, но также хочу, чтобы связанный файл также был связан с результатом. ex: Я ищу ключевое слово «solr», получившее результаты со всеми полями, а не с именем файла. Я ожидаю имя файла как solr.xml или любой путь. Пожалуйста, помогите мне. Thakns – Srini
Если вы не индексируете имя файла, эта информация не является solr, и вы не можете ее вернуть. Если вам нужно имя файла в вашем результирующем наборе, вам нужно его индексировать и хранить. – phisch