我需要使用Solr进行快速演示,我有一个MySql数据库,其中包含37k在线产品记录(例如gmail,google analytic),其中包含诸如名称,描述和关键字之类的信息。

我设法像这样存储数据

{
    "keywords":"[\"music-streaming,streaming,internet-radio,audio-scrobbling\"]",
    "description":"Last.fm is a music community website that offers personalized internet radio, using a recommendation system called \"Audioscrobbler\" to build a detailed profile of users based on their music tastes and interests. The service...",
    "operatingSystem":"[\"Mac,Windows,Linux,Web/Cloud,Android,iPhone,WindowsPhone,KindleFire\"]",
    "meta":"[\"Freemium\", \"Mac\", \"Windows\", \"Linux\", \"Web/Cloud\", \"Android\", \"iPhone\", \"...\", \"WindowsPhone\", \"KindleFire\"]",
    "name":"Last.fm",
    "id":39145,
    "category":"audio-and-music"}


元和操作系统是JSON数组,其余字段是文本字段。

我需要三件事


这种数据结构(架构)在结构,搜索和索引方面是否很好?
我想建立一个查询,其中显示基于关键字的相关产品?
如何将字段元和操作系统转换为过滤器而不是搜索关键字?


我的最终目标是拥有一个搜索栏,用户可以在其中输入特定的关键字,然后根据操作系统和元数据进行过滤

最佳答案

具有多个值的字段可能应该在multiValued字段中被索引为单独的术语,以便您可以查询/过滤具有特定值的字段。即将该字段索引为“ Mac”,“ Windows”,“ Linux”,“ Web / Cloud”等,而不是包含所有值的单个值。

根据您的确切要求,可以使用MoreLikeThis组件找到相似/相关的文档。

当字段正确地是多值的(应该是)时,可以使用generate a Facet on the field进行过滤(然后使用fq相应地过滤结果集)。

10-02 00:47
查看更多