使用Solr和DIH在子实体中搜索相关字段

时间:2014-04-24 15:54:02

标签: solr dih

我想使用Solr(4.7.2)和SQLServer DB中的DIH索引和查询作者及其参考书目(父/子关系),我想查询哪些作者在2005年之后出版了一本书,其标题包含例如,"狼"。

配置文件是:

dataimport.xml

<entity name="author" pk="Id" query="SELECT * FROM author"> 
    <field column="Id" name="Id" />
    <field column="name" name="name" />
    <entity name="book" pk=idBook query="SELECT * FROM Book where idAuthor={author.id}">
        <field column="year" name="year" />
        <field column="title" name="title" />
    <entity>
</entity>

schema.xml中

<schema name="example" version="1.5">
     <fields>
        <field name="Id" type="int" indexed="true" stored="true" required="true"  />        
        <field name="name" type="text" indexed="true" stored="true" required="false"  />
        <field name="year" type="int" indexed="true" stored="true" required="false"  multiValued="true"/>       
        <field name="title" type="text_en_splitting" indexed="true" stored="true" required="false"  multiValued="true"/>
    </fields>
    [... fieldtypes etc...]
</schema>   

我认为通过这种配置,我将失去年份和头衔之间的关系并显示交叉结果。

fq =年:[2005 TO *]和标题:狼

这个查询在2005年之后给作者留下了至少一本书和一本带有&#34;狼&#34;的书,但如果我想要在2005年之后出版一本书的作者并且包含&#34; Wolf&#34 ;。

提前致谢

1 个答案:

答案 0 :(得分:0)

最后,最好的解决方案是创建2个核心,一个是作者,另一个是书籍。然后,您必须加入查询结果,一个查询以获取具有所需表达式的书籍,然后搜索作者。

更多详情请见:Is Solr 4.0 capable of using 'join" for multiple core?