Anyone here to help me on implementing popular que...
# community-help
d
Anyone here to help me on implementing popular queries in Typesense. I have added analytics rules, but suggestions are not populating after search,,
j
Analytics are only aggregated based on the
analytics-flush-interval
server parameter config
So you would have to wait for that period of time before checking the destination collection
d
I have added interval as 60, I believe its 60 seconds. Even after waiting, I can’t find any data ingested to destination collection
j
Could you share the output of
GET /collections
and
GET /analytics/rules
d
Copy code
GET /collections
[
	{
		"created_at": 1743064715,
		"default_sorting_field": "count",
		"enable_nested_fields": true,
		"fields": [
			{
				"facet": false,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "query",
				"optional": false,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": false,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "count",
				"optional": false,
				"sort": true,
				"stem": false,
				"store": true,
				"type": "int32"
			}
		],
		"name": "product_queries",
		"num_documents": 0,
		"symbols_to_index": [],
		"token_separators": []
	},
	{
		"created_at": 1743052027,
		"default_sorting_field": "salePrice",
		"enable_nested_fields": true,
		"fields": [
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "name",
				"optional": false,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "ar",
				"name": "name_ar",
				"optional": false,
				"sort": true,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": false,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "description",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": false,
				"index": true,
				"infix": false,
				"locale": "ar",
				"name": "description_ar",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "slug",
				"optional": false,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "brand.id",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "brand.name",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "ar",
				"name": "brand.name_ar",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "categories.id",
				"optional": false,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string[]"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "categories.name",
				"optional": false,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string[]"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "ar",
				"name": "categories.name_ar",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string[]"
			},
			{
				"facet": false,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "badges",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string[]"
			},
			{
				"facet": false,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "images",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string[]"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "salePrice",
				"optional": false,
				"sort": true,
				"stem": false,
				"store": true,
				"type": "float"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "listPrice",
				"optional": false,
				"sort": true,
				"stem": false,
				"store": true,
				"type": "float"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "productModel",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "color",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": true,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "size",
				"optional": true,
				"sort": false,
				"stem": false,
				"store": true,
				"type": "string"
			},
			{
				"facet": false,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "defaultVariant",
				"optional": false,
				"sort": true,
				"stem": false,
				"store": true,
				"type": "bool"
			},
			{
				"facet": false,
				"index": true,
				"infix": false,
				"locale": "",
				"name": "hasVariants",
				"optional": false,
				"sort": true,
				"stem": false,
				"store": true,
				"type": "bool"
			}
		],
		"name": "product_v1",
		"num_documents": 1,
		"symbols_to_index": [],
		"token_separators": []
	}
]
Copy code
GET /analytics/rules

{
	"rules": [
		{
			"name": "product_queries_aggregation",
			"params": {
				"destination": {
					"collection": "product_queries"
				},
				"expand_query": false,
				"limit": 1000,
				"source": {
					"collections": [
						"product_v1"
					]
				}
			},
			"type": "popular_queries"
		}
	]
}
@Jason Bosco
j
The schema for the
product_queries
collection has the wrong field name. It should be
q
and not
query
. Docs for the schema: https://typesense.org/docs/28.0/api/analytics-query-suggestions.html#create-a-collection-for-queries
d
{
"created_at": 1744012870,
"default_sorting_field": "",
"enable_nested_fields": false,
"fields": [
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "q",
"optional": false,
"sort": false,
"stem": false,
"store": true,
"type": "string"
},
{
"facet": false,
"index": true,
"infix": false,
"locale": "",
"name": "count",
"optional": false,
"sort": true,
"stem": false,
"store": true,
"type": "int32"
}
],
"name": "product_queries",
"num_documents": 0,
"symbols_to_index": [],
"token_separators": []
},
@Jason Bosco I have updated product_queries collection and still no suggestins
f
Can you try freshly following the guide again verbatim, and only change the collection names? Maybe updating the schema can't solve this by itself
d
I am using self hosted typesense instance and configured below envs TYPESENSE_ENABLE_SEARCH_ANALYTICS: true TYPESENSE_ANALYTICS_DIR: /data/analytics TYPESENSE_ANALYTICS_FLUSH_INTERVAL: 60