我正在重新设计我们的公司网站之一。我的老板想要玩弄用搜索框替换我们所有导航的想法..搜索框应该能够查询我们的任何无关数据表。努力学习Solr
所以现在我试着用5张桌子。
产品 制造商 类别 成分 用途
所以应该能够查找产品名称,制造商名称,类别名称,成分名称,或使用名称
当我找回结果。如果用户点击了制造商的搜索结果..它会将它们带到制造商页面,查找该制造商的所有产品。 当点击产品页面链接时,它们会将它们带到实际的产品信息中。 成分将带他们到一个页面,将显示包含该成分的所有产品。
反正这是我的数据配置
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/xxx" user="xxx" password="xxx" />
<document>
<entity name="manufacturer" transformer="TemplateTransformer" pk="manNum"
query="SELECT manNum, manName FROM manufacturer
WHERE active = 1">
<field column="id" name="id" template="MAN-${manNum}" />
<field column="type" template="manufacturer" name="type"/>
<field column="manName" name="text"/>
<field column="manNum" name="manNum"/>
</entity>
<entity name="product" transformer="TemplateTransformer"
query="SELECT products.prodNum, products.prodName as text, m.manName FROM products JOIN man m USING (manNum)
WHERE products.active = 1
AND (hideWeb = 0 or hideWeb IS NULL)">
<field column="id" template="PROD-${products.prodNum}" name="id"/>
<field column="type" template="product" name="type"/>
<field column="text" name="text"/>
<field column="manName" name="manName"/>
</entity>
<entity name="ingredients" transformer="TemplateTransformer" pk="id"
query="SELECT id, text FROM inglist WHERE sort != ''">
<field column="id" name="id" template="ING-${inglist.id}"/>
<field column="type" template="ingredient" name="type"/>
<field column="text" name="text" />
</entity>
<entity name="uses" transformer="TemplateTransformer" pk="id"
query="SELECT id, text FROM useslist">
<field column="id" name="id" template="USE-${id}"/>
<field column="type" template="use" name="type"/>
<field column="text" name="text"/>
</entity>
<entity name="categories" transformer="TemplateTransformer" pk="id"
query="SELECT id, textShow as text FROM categorylist">
<field column="id" name="id" template="CATEGORY-${id}"/>
<field column="type" template="category" name="type"/>
<field column="text" name="text"/>
</entity>
</document>
</dataConfig>
而且我的架构..
<fields>
<field name="id" type="string" indexed="true" stored="true"/>
<field name="text" indexed="true" stored="true" type="text"/>
<field name="type" type="string" indexed="false" stored="true"/>
<field name="manName" type="text" indexed="false" stored="true"/>
<field name="manNum" type="string" indexed="false" stored="false"/>
</fields>
现在也许我没有做这种正确的方式...并有可能是一个更好的办法处理这个(事情。
反正我现在遇到的问题是我得到错误缺少必填字段“ID”。现在产品查询和制造商查询没有在选择ID列...但我认为变换查询应该照顾它?如果我选择prodNum作为ID ..那么所有的ID都会覆盖对方。
现在我可以在实际查询中连接它,并且将作为最后一招,但想知道我在做什么错误的解决方案。
编辑 没关系,这只是一个小白的问题,由于某种原因,我在想,模板变量是指的表名在SQL不是实体名称, 所以我全部换成了 的与
它的工作。
这只是我已经在这里用我原来的方法暗示见过其他的解决方案,但不能让它工作 – Kris