我想使用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 ;。
提前致谢
答案 0 :(得分:0)
最后,最好的解决方案是创建2个核心,一个是作者,另一个是书籍。然后,您必须加入查询结果,一个查询以获取具有所需表达式的书籍,然后搜索作者。
更多详情请见:Is Solr 4.0 capable of using 'join" for multiple core?