首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用typesense实例搜索适配器在过滤器多边形中使用geo位置

如何使用typesense实例搜索适配器在过滤器多边形中使用geo位置
EN

Stack Overflow用户
提问于 2021-08-24 08:44:54
回答 2查看 198关注 0票数 0

我用typesense创建了一个示例实例搜索js。

问题是当我搜索城市结果时,所有结果都用_geoloc和多边形进行过滤。

我使用_geoloc字段来存储lat长,并在类型中使用浮点数数组。

{"name": "_geoloc", "type": "float[]" , "facet": true },

_geoloc在Typesense instantSearch适配器中传递geoLocationField参数。

代码语言:javascript
复制
const polygon = [
    42.01,-124.31,
    48.835509470063045,-124.40453125000005,
    45.01082951668149,-65.95726562500005,
    31.247243545293433,-81.06578125000004,
    25.924152577235226,-97.68234374999997,
    32.300311895879545,-117.54828125      
];

const typesenseInstantsearchAdapter = new TypesenseInstantSearchAdapter({
    server: {
        apiKey: "xyz",
        nodes: [{
            host: "localhost",
            port: "8108",
            protocol: "http",
        }, ],
        cacheSearchResultsForSeconds: 2 * 60,
    },
    insidePolygon: [polygon],
    geoLocationField: "_geoloc",
    additionalSearchParameters: {
        queryBy: "name",
    },
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-14 14:17:09

谢谢你帮助@ErJab

经过一番研究,我找到了一个新的解决方案,而且效果很好。

Typesense适配器更新了用于多边形搜索的代码。

https://github.com/typesense/typesense-instantsearch-adapter/blob/978af9577ef632003aa2de6b1761772d979377eb/src/SearchRequestAdapter.js#L167-L198

现在我们可以在多边形内搜索。

代码语言:javascript
复制
const polygon = [
    42.01,-124.31,
    48.835509470063045,-124.40453125000005,
    45.01082951668149,-65.95726562500005,
    31.247243545293433,-81.06578125000004,
    25.924152577235226,-97.68234374999997,
    32.300311895879545,-117.54828125      
];
const typesenseInstantsearchAdapter = new TypesenseInstantSearchAdapter({
    server: {
        apiKey: "xyz",
        nodes: [{
            host: "localhost",
            port: "8108",
            protocol: "http",
        }, ],
        cacheSearchResultsForSeconds: 2 * 60,
    },
    geoLocationField: "_geoloc",
    additionalSearchParameters: {
        queryBy: "name",
    },
});
const searchClient = typesenseInstantsearchAdapter.searchClient;

const search = instantsearch({
    searchClient,
    indexName: "airports",
});

search.addWidgets([
    searchBox({
        container: '#searchbox',
        placeholder: 'Search for products',
    }),
    configure({
        insidePolygon : polygon,
    }),
]);
票数 0
EN

Stack Overflow用户

发布于 2021-08-27 23:51:24

从Typesense Instantsearch适配器的v2.1.0开始,您可以为此使用configure InstantSearch.js小部件,而不是将其传递到Typesense适配器。

就像这样:

代码语言:javascript
复制
const polygon = [
    42.01,-124.31,
    48.835509470063045,-124.40453125000005,
    45.01082951668149,-65.95726562500005,
    31.247243545293433,-81.06578125000004,
    25.924152577235226,-97.68234374999997,
    32.300311895879545,-117.54828125      
];

instantsearch.widgets.configure({
  insidePolygon: polygon,
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68904397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档