Несколько индексов в одном и том же ядре Solr ..? - PullRequest
3 голосов
/ 05 марта 2012

Я использую Apache Solr .. У меня есть следующий сценарий ..:

У меня есть две таблицы в моей базе данных PostGreSQL.Одним из них является " Автомобили ".Другой - это " Дилеры "

Теперь у меня есть файл конфигурации данных для Автомобили , как показано ниже:

<document name="offerings">
    <entity name="jc_offerings" query="select * from jc_offerings" >
        <field column="id" name="id" />
        <field column="name" name="name" />
        <field column="display_name" name="display_name" />
        <field column="extra" name="extra" />
    </entity>
</document>

У меня есть похожие данные - config.xml для " Дилеры ".Он имеет те же поля, что и автомобили: name, extra etc

Теперь в моем Schema.xml я определил следующие поля:

<fields>
  <field name="id" type="string"   indexed="true" />
  <field name="name" type="name"  indexed="true" />
  <field name="extra" type="extra"  indexed="true"  /> 

  <field name="CarsText" type="text_general" indexed="true" 
    stored="true" multiValued="true"/>
</fields>

<uniqueKey>id</uniqueKey>
<defaultSearchField>CarsText</defaultSearchField>
<copyField source="name" dest="CarsText"/>
<copyField source="extra" dest="CarsText"/>

Теперь я хочуискать как: "где зовут Марути" .. Так как же Solr узнает, нужно ли искать ::: Поле автомобилей: имя ИЛИ Поле дилера "имя" .. ??

Я прочитал по следующей ссылке: http://wiki.apache.org/solr/MultipleIndexes

Но я не могу понять, как это работает .. ??

Прочитав эту ссылку: я сделал еще одно поле в Мои Автомобили и Дилеры * data-config.xml * .. Что-то вроде:

<field name="type" value="car" />  : in Cars date-config.xml

и

<field name="type" value="dealer" />  : in Cars date-config.xml

А затем в Schema.xml ясоздал новое поле:

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

А потом я запросил что-то вроде:

localhost:8983/solr/select?q=name:Maruti&fq=type:dealer

Но это не сработало .. !!

Так что мне делать .. ??

Ответы [ 2 ]

5 голосов
/ 05 марта 2012

если поля одинаковы как для автомобилей, так и для дилеров, вы можете использовать один индекс с объектом, определенным следующим образом:

<fields>
  <field name="id" type="string"   indexed="true" stored="true"/>
  <field name="name" type="name"  indexed="true" stored="true" />
  <field name="extra" type="extra"  indexed="true" stored="true" /> 
  <field name="description_text" type="text_general" indexed="true" stored="true" multiValued="true"/>
  <field name="type" type="string" indexed="true" stored="true" />
</fields>

это будет работать как для автомобилей, так и для дилеров (так что вы ненужно иметь 2 индекса) и вы будете использовать поле типа для сортировки, если вам нужен «дилер» или «машина» (я использую ту же систему для фильтрации похожих типов объектов с незначительными«семантическая» разница)

также вам нужно будет добавить сохраненный = «истина» к полям, которые вы хотите получить, или вы сможете использовать их только для поиска (отсюда этот индекс = «истина»«)

2 голосов
/ 15 июня 2012

Добавление значения по умолчанию в поле типа гарантирует, что значение типа будет установлено на cars|dealer.

Вам придется индексировать источники отдельно.Затем используйте поле для копирования, и вы можете легко фильтровать либо cars|dealer.

Это кажется немного сложным и плохо объясняется в ссылке muti-indexes, упомянутой выше.

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