问题标签 [faceted-search]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 分面搜索(solr)与通过 PHP 进行的旧过滤?
我计划在我的电子商务商店中设置过滤系统(优化您的搜索)。你可以在这里看到一个例子:http ://www.bettymills.com/shop/product/find/Air+and+HVAC+Filters
PrestaShop、OpenCart 和 Magento 等平台具有所谓的分层导航。
我的问题是 Magento 或 PrestaShop 等平台中的分层导航与使用 Solr 或 Lucene 之类的多面导航之类的东西有什么区别。
仅通过 php 和 mysql 可以实现类似的结果吗?
非常感谢详细的解释。
java - Solr 刻面计数降至零
我工作的应用程序使用 Solr 来索引不同商店的页面或产品。当我说“不同商店的产品”时,它意味着一个产品可以在商店 A 或商店 B 中可用,但不能在商店 C 上。如果客户连接到商店 C 网站并搜索不可用的产品在这家商店,它不应该出现在搜索结果中。
我的架构中有一个“类型”字段,允许我判断文档是“页面”还是“产品”。现在我有了这个搜索约束,这个字段要么包含“page”,要么包含一个复合键,比如“productB”的“productA”。你猜对了,A 或 B 是商店的 id。
对于数据库中的每个产品,我将索引它 n 次,其中 n 是销售该产品的可用商店的数量。
我想使用构面搜索来过滤我想搜索的商店,但我遇到了一个问题:
我正在开始索引并搜索“foobar”而不进行搜索。我得到一个这样的方面列表:
这个数字不断增长(这是正常的),直到存储 A 的索引完成。然后我开始索引存储 B 并在查询 solr 时得到这种结果
但过了一会儿,solr 生气了,把这个结果发给我:
是的。我什至没有我的方面计数,productA
我什至无法搜索它!它会带来0个结果。
你知道发生了什么吗?对这类问题使用 facet 是错误的吗?
solr - 特定单词的 Solr 方面计数
我试图在我的 Solr 实现中找到特定字段的方面计数。
我想知道是否有一种方法可以仅获取该领域中几个特定单词的方面计数?
例如,
字段名称 = 产品
值可以是相机 <10> 、电视 <20> 、DVD <20> 、CD <30>
现在是否有可能只获得电视和 DVD 的刻面计数?
我尝试使用 facet.prefix,但它不适用于多个值。
——杰
php - 如何使用 PHP Solr 客户端指定过滤器?
我正在使用 PHP Solr 客户端,我想fq
为这个颜色值添加一个(Solr 过滤器查询):149,163,166
我是不是忘记了什么?因为我没有使用 PHP 客户端获得任何结果。
通过调用此 URL
有结果。
lucene - 方面结果上的保护字?
我使用带有 solr 的 lucene 来索引一些文档(新闻)。这些文件也有一个标题。现在,我尝试对 HEADLINE 字段进行构面搜索,以找到计数最高的术语。所有这些都可以正常工作,包括停用词列表。HEADLINE 字段是一个多值字段。我使用solr.StandardTokenizerFactory
将这些字段拆分为单个术语(我知道,这不是最佳实践,但它是唯一的方法并且有效)。
有时,tokenizer 会拆分不应拆分的术语,例如9/11
(拆分为 9 和 11)。所以我决定使用“protword”列表。“9/11”是这个原词列表的一部分。但没有变化。
这是我的 schema.xml 中的部分
查看分面结果,我看到很多处理“9/11”的文档在“9”或“11”分组(分面),但从来没有“9/11”。
为什么这不起作用?
谢谢你。
google-analytics - 寻找日期时间分面搜索小部件和/或设计模式
当应用于亚马逊搜索中的书籍类别等内容时,分面搜索对用户友好:小说 (500)、历史 (320)、传记 (212) 等。但是是否有任何好的分面搜索设计(或小部件)允许用户缩小日期时间范围,同时向用户显示搜索计数在日历中的分布情况。
分析应用程序的一个简单示例:管理员用户正在搜索站点用户,并希望通过注册日期字段来限制搜索。时间线小部件(即我正在寻找的)显示了 3 年跨度内每天发生的次数。该视觉反馈显示,注册增加的管理员与周四注册的新用户相关。小部件让他将结果限制在 16 个月内的所有星期四。该搜索可以帮助他找出人们在星期四注册的原因。
任何人都知道可以做到这一切的小部件吗?(最好是轻量级的 javascript)或与此场景相关的任何设计文献。
到目前为止,我已经搜索了几个小时,我发现最好的是谷歌分析中内置的时间线视图(如图),这很漂亮;但我不知道是否有可用的开源版本。
java - 通过 Solrj 访问 Solr facet_ranges
也许已经为时已晚,但我正在努力解决Solr 的 Facet Ranges问题。我可以通过 Solrj 执行查询,但我不明白如何通过 Solrj 检索结果。QueryResponse对象没有给我范围的 getter 方法,是吗?
例如,生成的 XML 如下所示:
我想获得计数数据。
ruby-on-rails - Rails Sunspot gem: Usings facets with multiple model site-wide searches
I'm trying to implement a sitewide search through the powerful Sunspot gem for Rails. This involves a search across multiple, very different models at once. What I WANT to do is use the faceting feature to allow the user to filter their search results on each model, or by default view all on the same page, interspersed with each other ordered by the :boost qualifier. Combining the faceting code from the Sunspot Railscast with the multiple model searching code from another Stackoverflow question (a variation upon the 'Multiple Type' code from the Sunspot documentation) gave me a solution that I'd think would work, but doesn't.
The multiple method search succeeds, but the facets always turn up null. My basic approach is to provide a virtual attribute on each model by the same name, :search_class, that is just the model's class name rendered into a string. I then try and use that as a facet. However, in the view logic the results of the facet (@search.facet(:search_class).rows) is always an empty array, including when @search.results returns many different models in the same query, despite each returned instance having a perfectly accessible Instance.search_class attribute.
I'm using Rails 3.1.0 and sunspot-rails 1.2.1.
What should I do to make this faceting code work?
Controller:
Models:
View:
solr - 如何检索 Solr 搜索的所有适用方面字段
我正在尝试在网站上使用 Solr 进行分面搜索。
当用户触发搜索查询时,我会查询 Solr 并检索可以显示的搜索结果。
我的问题是 - 我如何找出哪些方面字段和术语适用于搜索结果?
需要明确的是 - 不同类别的产品具有不同的方面字段,我想找到一种方法来为已返回的搜索结果带回最相关的方面字段。我不想指定字段 - 我希望 Solr 为我识别相关字段。
提前致谢!
nosql - 在任意产品集合上查询产品目录 RavenDB 存储以获取规格聚合
这是此问题中概述的项目的延续。
我有以下模型:
“规格”数组存储由特殊字符连接的产品规格名称值对。例如,如果产品颜色为蓝色,则规格字符串将为“Color~Blue”。以这种方式表示规格允许查询具有由查询指定的多个规格值的产品。我想支持两个主要查询:
- 获取给定类别中的所有产品。
- 获取给定类别中具有一组指定规格的所有产品。
这适用于 RavenDB。但是,除了满足给定查询的产品之外,我还想返回一个结果集,其中包含查询指定的产品集的所有规范名称-值对。规范名称-值对应按规范的名称和值分组,并包含具有给定规范名称-值对的产品的计数。对于查询 #1,我创建了以下 map reduce 索引:
然后我可以查询该索引并获取给定类别中的所有规范名称-值对。我遇到的问题是要获得相同的结果集,但要获得同时按类别和一组规范名称-值对过滤的查询。使用 SQL 时,将通过对按类别和规格过滤的一组产品进行分组来获得此结果集。一般来说,这种类型的查询很昂贵,但是当同时按类别和规格进行过滤时,产品集通常很小,尽管不足以放入单个页面 - 它们可能包含多达 1000 个产品。作为参考,MongoDB 支持组方法,可用于实现相同的结果集。这将执行 ad hoc 分组服务器端并且性能是可以接受的。
如何使用 RavenDB 获得这种类型的结果集?
一种可能的解决方案是获取查询的所有产品并在内存中执行分组,另一种选择是如上所述创建 mapreduce 索引,尽管这样做的挑战是推导出可以为给定类别进行的所有可能的规范选择此外,此类索引的大小可能会爆炸式增长。
例如,看看这个紧固件类别页面。用户可以通过选择属性来过滤他们的选择。选择属性时,它会缩小产品的选择并显示新产品集中的属性。这种类型的交互通常称为分面搜索。
编辑
同时,我将尝试使用Solr的解决方案,因为它们支持开箱即用的分面搜索。
编辑 2
RavenDB 似乎也支持分面搜索(这当然是有道理的,索引由 Lucene 存储,就像 Solr 一样)。我将对此进行探索并发布更新。
编辑 3
RavenDB 分面搜索功能按预期工作。我为每个类别 ID 存储一个构面设置文档,用于计算给定类别中查询的构面。我现在遇到的问题是性能。对于具有 4500 个不同类别的 500k 产品的集合,产生 4500 个方面设置文档,按类别 id 的查询在查询方面时大约需要 16 秒,而在不查询方面时大约需要 0.05 秒。测试的特定类别包含大约 6k 个产品、23 个不同的 facet 和 2k 个不同的 facet name-range 组合。在查看FacetedQueryRunner中的代码后似乎一个方面查询将导致对每个方面名称-值组合的 Lucene 查询以获取计数,以及对每个方面名称的查询以获取术语。实现的一个问题是,无论查询如何,它都会检索给定构面名称的所有不同术语,这在大多数情况下会显着减少构面的术语数量,从而减少 Lucene 查询的数量。这里提高性能的一种方法是为每个构面设置文档存储一个 MapReduce 计算结果集(如上所示),然后可以在进一步按构面过滤时查询该结果集以获取所有不同的术语。然而,整体性能可能仍然太慢。