search - 在ElasticSearch中实现位置搜索

标签 search elasticsearch

我在ElasticSearch中返回错误结果的位置查询遇到问题。

在我们的系统(一个业务搜索引擎)中,每个搜索都需要两个输入:一个位置和一个查询字符串,例如

q=sushi
location=Greenwich Village, New York, New York

我希望搜索首先向我显示格林威治村的寿司,然后向我显示格林威治村之外的寿司,但不要显示非寿司结果。

问题是,由于查询了location,格林威治村中的任何事物都可以匹配-律师,医生等。我想对ElasticSearch说以下内容:

如果q匹配,则不必定位(可以将寿司归还格林威治村),但如果位置匹配,则不要返回,除非q也匹配(不可以返回格林威治村的非寿司店) 。

有人对如何执行此操作有任何想法吗?

最佳答案

听起来您想搜索“寿司”(您不想要非寿司结果),但按位置对结果进行排序(您首先要格林威治村的结果)。

如果要将位置存储为地理位置,则只需使用距离sort您的结果。

如果location只是一个字段,并且您只能知道企业位于某个位置的内部还是外部,则可以使用Custom Filters Score查询来提高结果在所需位置的相关性。 query部分应包含对“sushi”的搜索,而filters部分应包含对位置的搜索。

关于search - 在ElasticSearch中实现位置搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199789/

相关文章:

jquery - GSA 搜索建议使用 ss.js 或 Ajax 自动完成 jQuery 插件

sql - 跨 grails 域类的复杂搜索

object - 如何为自定义对象列表声明嵌套字段类型?

django - ElasticSearch_ModelFieldNotMappedError

elasticsearch - 无法获取映射。你有与模式匹配的索引吗?

python - 用数字搜索 - python - whoosh

search - 如何配置 Solr 以对字段名称(而不是值)执行不区分大小写的搜索?

javascript - 我怎样才能用jquery实现像ctrl+f这样的搜索

elasticsearch - 如何使用主管在 docker 容器上运行 elasticsearch?

http - 如何使用InvokeHTTP从Apache Nifi执行ElasticSearch agg查询?