2013-05-01 2 views
0

Я использую solr search (solr 4.X), все работает как ожидалось, я получил требование, чтобы мне нужно показать связанный файл вместе с результатами поиска.SOLR Результаты поиска со связанным файлом

Я получаю результаты поиска, но не файлы. Как мне получить, по крайней мере, я ожидаю имя файла вместе с результатами поиска.

Спасибо за помощь. Помогите мне

+3

Пожалуйста, покажите нам свою схему и рассказать нам больше о том, как файлы индекса и запрашиваются. В противном случае вам будет сложно помочь. Спасибо – phisch

+0

Спасибо за ответ! Схема - это пример схемы. Я проиндексировал файлы, используя post.jar. Я запросил solr через клиента solrj. Я получил результаты, что хочу, но также хочу, чтобы связанный файл также был связан с результатом. ex: Я ищу ключевое слово «solr», получившее результаты со всеми полями, а не с именем файла. Я ожидаю имя файла как solr.xml или любой путь. Пожалуйста, помогите мне. Thakns – Srini

+0

Если вы не индексируете имя файла, эта информация не является solr, и вы не можете ее вернуть. Если вам нужно имя файла в вашем результирующем наборе, вам нужно его индексировать и хранить. – phisch

ответ

0

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); 
+0

Phisch, Большое спасибо за ответ, я понял. Еще одна вещь, я понимаю в случае xml-файлов. То же самое, как я могу добиться для файлов PDF? – Srini

+0

Вам нужно будет извлечь данные, которые вы ищете, из PDF и отправить их в solr (в виде строк). Апач Тика делает добычу. Существуют также DataImportHandlers, которые могут обрабатывать файлы PDF, но с ограничениями. – phisch

+0

Получил это. Большое спасибо за вашу помощь. – Srini

Смежные вопросы