标签: algolia

Algolia vs Solr搜索

我正在构建一个产品搜索平台.之前我使用过Solr搜索引擎,我发现它的性能很好,但是没有生成用户界面.最近我发现Algolia具有更多功能,易于设置,并生成用户界面.所以如果有人之前使用过Algolia:

  • Algolia的表现比Solr好吗?
  • Algolia和Websolr有什么区别吗?

performance search solr websolr algolia

6
推荐指数
1
解决办法
3404
查看次数

Algolia和搜索阵列

我正在寻找一种在Algolia中搜索记录的方法,其中至少有一个数组元素符合几个条件.举个例子,想象一下这种记录:

{
    "name": "Shoes",
    "price": 100,
    "prices": [
    {
        "start": 20160101,
        "end": 20160131,
        "price": 50,
    },
    {
        "start": 20160201,
        "end": 20160229,
        "price": 80,
    }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来执行如下查询:

prices.price<60 AND prices.start<=20160210 AND prices.end>=20160210

(给定日期价格低于60的产品)

该查询不应返回任何内容,因为该日期未满足价格条件,但无论如何都会返回记录.可能是因为所有价格中的"全球"条件都符合条件.

我是Algolia的初学者并且正在努力学习.有没有办法可以做到所需的请求,还是我必须为价格单独索引并使用多个查询

谢谢.

algolia

6
推荐指数
1
解决办法
1357
查看次数

Algolia搜索属性名称

关于algolia的数据是这样的

objectID:3464542
Type:"Accelerator"
Country:"Germany"
City:null
Name:"ProsiebenSat1 Accelerator Batch #8"
Run Code Online (Sandbox Code Playgroud)

我想搜索德国的任何名字.我怎么做的?

当我这样做时Contact.raw_search("Batch"),我会得到所有记录,甚至其名称包括甚至非德语.我想得到所有特定国家的人.

ruby ruby-on-rails algolia

6
推荐指数
1
解决办法
349
查看次数

Algolia搜索网络错误

我正在将Algolia与Firebase项目连接起来.我正在使用Firebase云功能,以使我的Algolia索引与我的Firebase数据库中发生的所有更改保持同步.但每当我打电话

index.saveObject(firebaseObject);

从我的Firebase云功能中,我得到了

AlgoliaSearchNetworkError:getaddrinfo ENOTFOUND 5sffby8as8-1.algolianet.com 5sffby8as8-1.algolianet.com:443

我可以在Firebase函数之外运行同步操作(仅在我自己的机器上).此代码通过node.js在javascript文件中运行.

我在任何搜索中都没有找到任何关于此的问题或答案.任何想法或帮助?

javascript runtime-error firebase algolia

6
推荐指数
1
解决办法
1494
查看次数

运行 node index.js 不会执行任何操作

我正在尝试遵循一个关于设置算法的简单教程,可以在这里找到。

https://www.algolia.com/doc/tutorials/indexing/3rd-party-service/firebase-algolia/

我逐字逐句地将代码复制到index.js 文件中。

当我在终端中运行 node index.js 时,我得到了这个

在此输入图像描述

没有成功消息。阿尔戈利亚什么也没有。没有什么。我已经包含了我的代码,是否有任何人注意到我可能做错了。这让我沮丧了好几个小时。

const algoliasearch = require('algoliasearch');
const dotenv = require('dotenv');
const firebase = require('firebase');

// load values from the .env file in this directory into process.env
dotenv.load();

// configure firebase
firebase.initializeApp({
  databaseURL: process.env.FIREBASE_DATABASE_URL,
});
const database = firebase.database();

// configure algolia
const algolia = algoliasearch(
  process.env.ALGOLIA_APP_ID,
  process.env.ALGOLIA_API_KEY
);
const index = algolia.initIndex(process.env.ALGOLIA_INDEX_NAME);

  // Get all contacts from Firebase
  database.ref('/events').once('value', event => {
    console.log('index is', index);

    // Build an array of all records to …
Run Code Online (Sandbox Code Playgroud)

node.js firebase-realtime-database algolia

6
推荐指数
2
解决办法
1万
查看次数

如何将 Postgresql 中的数据同步到 Algolia?

我想使用 Algolia 但不知何故我没有找到任何关于将数据从 Postgresql 同步到 Algolia 的文档?

设想

  1. 用户将一个项目添加到 Postgresql 并立即在 Algolia 数据库中同步

在 node.js + mongodb 中有一个名为 mongolia 的库。

问候,

postgresql algolia

6
推荐指数
0
解决办法
315
查看次数

Algolia - 未捕获、未指定的“错误”事件?

我最近为客户端集成了 Algolia 搜索,我注意到它目前不适用于任何基于 IE 的浏览器。

下面是我们正在使用的代码和我们包含的库文件的示例。我尝试了多种方法,包括 polyfill。但似乎还没有成功。

const search = instantsearch({
        indexName: 'index',
        searchClient: algoliasearch('KEY', 'PAIR')
    })

    search.addWidgets([
        instantsearch.widgets.configure({
            disjunctiveFacetsRefinements: {
                lang: ['en-gb']
            }
        }),

        instantsearch.widgets.pagination({
            container: '#pagination'
        }),

        instantsearch.widgets.searchBox({
            container: '#searchbox',
            placeholder: 'Start typing to search..',
            cssClasses: {
                root: 'search-form'
            },
        }),

        instantsearch.widgets.hits({
            container: '#hits',
            templates: {
                item:
                    '<a href="{{ url }}"><h2>{{#helpers.highlight}}{ "attribute": "title" }{{/helpers.highlight}}</h2></a><p>{{ description }}</p>',
            },
        })
    ]);

    search.start();
Run Code Online (Sandbox Code Playgroud)

我们将包括这两个文件以供搜索

<script src="https://cdn.jsdelivr.net/npm/algoliasearch@4.0.0/dist/algoliasearch-lite.umd.js"
        type="text/javascript"></script>
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4.0.0/dist/instantsearch.production.min.js"
        type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

我们得到的控制台错误也是

Uncaught, unspecified "error" event. ([object, object])
File: instantsearch.production.min.js, Line: 2, …
Run Code Online (Sandbox Code Playgroud)

javascript events algolia

6
推荐指数
0
解决办法
129
查看次数

Algolia - 获取大量记录并使用过滤器删除

我使用 Algolia 进行搜索,我们得到了大量记录。我们想要删除一些记录,并决定删除早于 X 日期的记录。

首先我用的是这个

const records = [];
const deleteRecordsBeforeDateAlgolia = (date) => {
    let client;

    *****

    const index = client.initIndex('function_message');
    //get the records before the given date
    try {
        index.search('',{
            filters: `time_stamp < ${date}`
        }).then(({hits}) => {
            if(hits.length > 0) {
                for (const hit of hits) {
                    index.deleteObject(hit.objectID);
                    records.push(hit.objectID);
                }
            }
            if(hits.length === 0) {
                console.log(`Deleted ${records.length} records`);
            } else {
                deleteRecordsBeforeDateAlgolia(date);
            }
        });
    } catch (err) {
        console.error(err);
    }
};
Run Code Online (Sandbox Code Playgroud)

但我意识到这并不是优化+在产品上删除时会非常慢。你能告诉我如何使用过滤器(在本例中为时间戳)获取大量数据,然后将其全部删除吗?

编辑

const records = []; …
Run Code Online (Sandbox Code Playgroud)

javascript node.js algolia

6
推荐指数
1
解决办法
426
查看次数

如何将模块添加到 build.rollupOptions.external?

我正在尝试让 Algolia InstantSearch.js 与我的 Svelte 网站一起使用。当我尝试在 Netlify 上部署它时,出现以下错误:

9:27:35 PM: [vite]: Rollup failed to resolve import "instantsearch.js/es/widgets.js" from "src/components/Search/SearchSection.svelte".
9:27:35 PM: This is most likely unintended because it can break your application at runtime.
9:27:35 PM: If you do want to externalize this module explicitly add it to
9:27:35 PM: `build.rollupOptions.external`
9:27:35 PM: > [vite]: Rollup failed to resolve import "instantsearch.js/es/widgets.js" from "src/components/Search/SearchSection.svelte".
9:27:35 PM: This is most likely unintended because it can break your application at runtime.
9:27:35 PM: …
Run Code Online (Sandbox Code Playgroud)

node.js algolia rollupjs svelte

6
推荐指数
1
解决办法
6966
查看次数

如何在对象数组中查询算法数据

我有一个数据数组,其中 Algolia 索引中包含多个对象,如下所示。

[
{
status:available
startDate: 2000-10-20
endDate:2022-10-20
availablePlatform:[1,2,3]
availableCountry:908,

},
{
status:available,
startDate: 2023-10-20
endDate:2123-10-20
availablePlatform:[4,5,6,7]
AvailableCountry:[144],
},

]
Run Code Online (Sandbox Code Playgroud)

我需要执行一个过滤,该过滤应该在这些对象中进行精确匹配。

前任:

(1) avails.status:available AND avails.availablePlatform:2 AND avails.availableCountry:908

这将按预期返回 true。

(2) avails.status:available AND avails.availablePlatform:2 AND avails.availableCountry:144

availableCountry当 Algolia与第二个对象匹配时,该值也会返回 true 。但在这种情况下我需要返回 false。这样的能力是否存在?或者人们可以向我指出解决这个问题的其他方法吗?

这里也提出了同样的问题https://discourse.algolia.com/t/filtering-which-should-do-a-exact-match-within-data-objects-in-an-array/16677

谢谢。

algolia

6
推荐指数
1
解决办法
496
查看次数