我需要使用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
相应地过滤结果集)。