SOLR / LUCENE Эксперты, пожалуйста, помогите мне спроектировать простой поиск по ключевым словам из индекса PDF? - PullRequest
1 голос
/ 02 августа 2011

Я баловался с Solr, но не мог найти способ адаптировать его к моему требованию.

Что у меня есть:

Куча файлов PDF.Набор ключевых слов.

Чего я пытаюсь достичь:

Индекс PDF-файлов (solrcell - сделано) Поиск по ключевому слову (работает нормально) Адаптируйте выводчтобы выложить имена PDF-файлов, отрывок, где произошло ключевое слово (без понятия / идеи, как это сделать)

Попытка манипулирования ResponseHandler / Schema.xml / Solrconfig.xml безрезультатна.

Эксперты Lucene / solr, вы думаете, что я пытаюсь достичь, возможно?

Я поместил свой существующий код на github @ https://github.com/ThinkCode/solr_search (который в основном является примером по умолчанию Solr)с небольшими изменениями в полях (все содержимое хранится в одном поле содержимого).

Заметные изменения в schema.xml:

Schema.xml:

<solrQueryParser defaultOperator="AND"/>

   <field name="id" type="string" indexed="true" stored="true" required="true" />

   <field name="content" type="text_general" indexed="true" stored="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>

   <dynamicField name="*" type="string"    indexed="true"  stored="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>

<solrQueryParser defaultOperator="AND"/>

<copyField source="*" dest="content"/>

Текущий вывод:

(запрос) http://localhost:8983/solr/select/?q=Java+Servlet&version=2.2&start=0&rows=10&indent=on

<response><lst name="responseHeader"><int name="status">0</int><int name="QTime">13</int><lst name="params"><str name="indent">on</str><str name="start">0</str><str name="q">Java Servlet</str><str name="version">2.2</str><str name="rows">10</str></lst></lst>

<result name="response" numFound="1" start="0"><doc><arr name="content_type"><str>application/pdf</str></arr><str name="id">tutorial.pdf</str><str name="subject">Solr</str><arr name="title"><str>Solr tutorial</str></arr></doc></result></response>

То, что я ищу, это «извлеченный фрагмент (строка), где было найдено ключевое слово».

В указанном запросе я ищу «Сервлет Java», и он возвращает документ. Меня интересует контекст «Solr может работать в любом контейнере сервлетов Java по вашему выбору», который будет возвращен в выходном XML-файле..

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Чтобы получить фрагменты текста вокруг соответствующих ключевых слов, см. http://wiki.apache.org/solr/HighlightingParameters

Чтобы получить имя файла индексированного PDF как часть ответа, просто добавьте поле с этой информацией (это должно быть строковое поле, не проиндексированное, сохраненное). Конечно, вы должны заполнить это новое поле во время индекса.

0 голосов
/ 12 мая 2013

Автономное решение с использованием PDF Box и Apache Lucene доступно по адресу: * https://github.com/WolfgangFahl/pdfindexer Он создаст файл HTML со ссылками на соответствующие страницы в файле PDF, где были найдены ключевые слова.

...