Как читать из индекса Solr? - PullRequest
0 голосов
/ 17 марта 2011

Я индексирую свою таблицу базы данных непосредственно в solr согласно этой документации http://wiki.apache.org/solr/DIHQuickStart

Полный импорт работает. Однако, когда я запрашиваю данные, как это, я получаю нет результата

   $solr = new Apache_Solr_Service('localhost', '8983', 'solr/');

   $offset = 0;
   $limit = 1000;

   $queries = array(
      'details:Server'
   );

   $response = $solr->search( $query, $offset, $limit );

Сам Solr работает. Я пытаюсь запросить строку «детали», но теперь она дает мне результат.

Есть идеи, что я делаю не так?

Schema.xml: http://pastebin.com/2kx7MkDX

data-config.xml: http://pastebin.com/vtDZzuqC

solrconfig.xml: http://pastebin.com/V6nzvMa5

все из / example / solr / conf /

Ответы [ 4 ]

4 голосов
/ 21 марта 2011

Вот ваш ответ:

Ваше поле 'details' определено как 'string'.В Solr это означает, что он индексируется как один буквальный токен.Тип 'string' обычно используется для идентификаторов.

Следовательно, ваш запрос 'details: Server' будет ONLY соответствовать документам, где 'details' в точности равно 'Сервер ', а НЕ документ, в котором' детали 'содержит' Сервер '.

Измените поле "детали" на то, что будет индексировать ваш текст как отдельные слова (токены):

<field name="details" type="text" ...
<!-- for instance -->

И переиндексировать все.Возможно, вы также захотите просмотреть определения других ваших полей.

Я рекомендую вам прочитать определения типов по умолчанию в вашем schema.xml.

2 голосов
/ 18 марта 2011

Должно

$solr = new Apache_Solr_Service('localhost', '8983', 'solr/');

быть

$solr = new Apache_Solr_Service('localhost', '8983', '/solr');
1 голос
/ 14 сентября 2012

добавить в data-config.xml

<dataConfig>
  <dataSource type="JdbcDataSource"
             driver="com.mysql.jdbc.Driver"
             url="jdbc:mysql://localhost/admin_pproject"
             user="root"
             password=""/>
  <document>
    <entity name="id"
           query="select id, name,details, owner, subtype, edit, sub, type, provision, active from programme">

           <!-- ADD-->         
           <field column="id" name="id"/>
           <field column="name" name="name" />
           <field column="details" name="details" />
           <field column="owner" name="owner" />
           <field column="subtype" name="subtype" />
           <field column="edit" name="edit" />
           <field column="sub" name="sub" />
           <field column="type" name="type" />
           <field column="provision" name="provision" />
           <field column="active" name="active" />


        </entity>
  </document>
</dataConfig>

test

0 голосов
/ 18 марта 2011

Нам, вероятно, нужно увидеть ваш schema.xml. Там может быть ошибка в этом.

Что произойдет, если вы будете искать "сервер" в нижнем регистре "s"?

Если это решит проблему, у вас возникла проблема с анализом, посмотрите файл schema.xml.

Вы также можете посмотреть в браузере схемы (перейдите по ссылке на странице администратора). Нажмите на поле «детали» (слева), посмотрите на 1000 или 10000 терминов и посмотрите, видите ли вы слово «сервер» (или «сервер»). То, что вы увидите, скажет вам, находится ли слово в индексе (по крайней мере, если у вас есть менее 10 000 уникальных слов в поле).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...