【发布时间】:2011-09-01 15:02:03
【问题描述】:
我工作的应用程序使用 Solr 来索引不同商店的页面或产品。当我说“不同商店的产品”时,是指一种产品可以在A店或B店买到,但不能在C店买到。如果客户连接到C店的网站并搜索没有可用的产品在这家商店,它不应该出现在搜索结果中。
我的架构中有一个“类型”字段,允许我判断文档是“页面”还是“产品”。现在我有了这个搜索约束,这个字段要么包含“page”,要么包含一个复合键,比如“productB”的“productA”。你猜对了,A 或 B 是商店的 id。
对于数据库中的每个产品,我将索引它 n 次,其中 n 是销售该产品的可用商店的数量。
我想使用分面搜索来过滤我想搜索的商店,但我遇到了一个问题:
我正在开始索引并搜索“foobar”而不进行搜索。我得到一个这样的方面列表:
<lst name="facet_fields">
<lst name="type">
<int name="productA">10</int>
<int>0</int>
</lst>
这个数字一直在增长(这是正常的),直到商店 A 的索引完成。 然后我开始索引存储B,查询solr时得到这种结果
<lst name="facet_fields">
<lst name="type">
<int name="productA">303</int>
<int name="productB">6</int>
<int>0</int>
</lst>
但是过了一会儿,solr 生气了,然后把这个结果发给我:
<lst name="facet_fields">
<lst name="type">
<int name="productB">320</int>
</lst>
是的。我什至没有 productA 的方面计数,我什至无法搜索它!它会带来0个结果。
你知道发生了什么吗? 对这类问题使用 facet 是错误的吗?
【问题讨论】:
-
您可能正在通过主键覆盖文档。你能得到任何productA文件吗?
-
不,我无法获得任何 productA 文件。感谢您的回答。现在听起来很明显......
标签: java php solr faceted-search