2012-02-06 5 views
6

Я пытаюсь начать работу с Apache Solr, но некоторые вещи мне не понятны. Чтение через tutorial, я создал запущенный экземпляр Solr. Я сбиваю с толку то, что вся конфигурация Solr (схемы и т. Д.) Находится в формате XML. Когда они добавляют примеры данных, он показывает, как добавить XML-документы (java -jar post.jar solr.xml monitor.xml). Это просто плохой выбор формата выборки? Я имею в виду, они загружают данные, описывающие документы, или фактические документы, которые они добавляют, являются .xml-файлами?Начало работы с Solr

Я пытаюсь добавить некоторые книги в формате .txt, поэтому, если я использую java -jar post.jar mydoc.txt, добавляю ли я его? Как я могу добавить этот документ и метаданные (автор, название) об этом?

То есть, я попытался создать простую страницу Html размещать документы Solr:

<html> 
    <head></head> 
<body> 
    <form action="http://localhost:8983/solr/update?commit=true" enctype="multipart/form-data" method="post"> 
    <input type="file"> 
    <input type="submit" value="Send"> 
    </form> 
</body> 
</html> 

Когда я пытаюсь отправить файл, я получаю такой ответ:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">26</int> 
    </lst> 
</response> 

Is это правильно? Означает ли это, что я успешно добавил файл? Если это так, одно из слов в файле, например, «montagna» (это итальянская книга, montagna означает гору ...). Если я посетить URL-адрес

http://localhost:8983/solr/select/?q=montagna&start=0&rows=10&indent=on 

Я ожидаю, что что-то должно быть возвращено (весь текст, может быть, или некоторую информацию о файле), но это то, что я получаю:

<response> 
    <lst name="responseHeader"> 
    <int name="status">0</int> 
     <int name="QTime">1</int> 
     <lst name="params"> 
     <str name="indent">on</str> 
     <str name="start">0</str> 
     <str name="q">montagna</str> 
     <str name="rows">10</str> 
    </lst> 
    </lst> 
    <result name="response" numFound="0" start="0"/> 
</response> 

Не кажется как матч со мной. Кроме того, согласно to this answer, я должен иметь возможность вернуть текст, окружающий матчи, hl.fragsize. Как интегрировать это в строку поиска? Спасибо

ответ

5

Пример solr добавляет документы в индекс через сообщения xml. Посмотрите here. Вы упомянули упомянутый вами *.xml, потому что в файловых системах хранятся некоторые XML-сообщения. Эти xml-сообщения таковы:

<add> 
    <doc> 
    <field name="id">UTF8TEST</field> 
    <field name="name">Test with some UTF-8 encoded characters</field> 
    <field name="manu">Apache Software Foundation</field> 
    <field name="cat">software</field> 
    <field name="cat">search</field> 
    <field name="features">No accents here</field> 
    <field name="price">0</field> 
    <!-- no popularity, get the default from schema.xml --> 
    <field name="inStock">true</field> 
    </doc> 
</add> 

Это всего лишь способ представления любого документа для индексации. Каждый документ содержит одно или несколько полей и т. Д. Существуют разные способы добавления документов в Solr, например, он принимает также CSV format, но наиболее распространенным в настоящее время является формат xml.

Я думаю, что вы на самом деле ничего не индексируете. Вы можете проверить выход этого запроса: http://localhost:8983/solr/select/?q=*:*, который извлекает все документы, которые у вас есть в вашем индексе. Обычная ошибка также заключается в том, чтобы забыть совершить, но я видел, что вы добавили параметр commit=true к вашему URL-адресу, так что это не ваш случай.

Если вы хотите индексировать только содержимое текстового файла, можно, например, определить вашу схему с двумя полями:

  • имени файла
  • контента

и использовать это сообщение укажите ваш документ:

<add> 
    <doc> 
    <field name="filename">test.txt</field> 
    <field name="content">Test with some UTF-8 encoded characters</field> 
    </doc> 
</add> 
1

Понятия термины:

Document in solr -> Row in RDBMS 
Field of document -> Column of a cell 

И, конечно же, ядро ​​Solr, как база данных, так и гигантская таблица, занимаемая (потенциально) разреженной манерой.

Для вашего (конкретного) использования вы должны создать документ для каждого файла; состоящий из идентификатора, содержимого файла и т. д.


XML - один из способов составления операций solr. http://wiki.apache.org/solr/UpdateXmlMessages

У этого есть операции добавления, удаления, фиксации и оптимизации. Операция добавления включает один или несколько документов.

<add> 
    <doc> 
    <field name="employeeId">05991</field> 
    <field name="office">Bridgewater</field> 
    <field name="skills">Perl</field> 
    <field name="skills">Java</field> 
    </doc> 
    [<doc> ... </doc>[<doc> ... </doc>]] 
</add> 

Есть также CSV (только добавить функциональность), JSON (полная функциональность), DIH (регулярные импорта базы данных).

Существует также extracting request handler, который может извлекать контент (и метаданные) из всех видов богатых документов (DOC, DOCX, PDF). Дополнительно: есть literal, чтобы настроить свои поля.


Экстрагирующую обработчик запросов сохраняет свой выход в поле text. Парсер запросов q= и маркер принимают поле по умолчанию (да, это относится к тому, что вы сделали) от text. Вы можете указать поля для них; также поля solr возвращаются к вам в результатах.