我工作的应用程序使用 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 是错误的吗?