gpt4 book ai didi

performance - 全文和基于属性的搜索引擎的混合

转载 作者:行者123 更新时间:2023-12-04 18:46:48 25 4
gpt4 key购买 nike

背景:
SQL 数据库表示不同类型的事件(音乐会、足球比赛、慈善收藏等),其中每个都包含与事件相关的数据(音乐会 - 艺术家姓名,比赛 - 主持人/访客团队)。所有这些事件都继承自一个通用表 event ,其中包含与所有这些相关的数据(名称、描述、位置、开始/结束日期)。
使用从 Hibernate 获知的每个子类表模型实现继承或 Doctrine .数据库还存储表 artists ( id , name , birth_date ) 和 football_teams ( id , name , country , coach_name ) 用于 event_concertsevent_football_matches表(通过 FK)。
问题:
创建一个给定一些条件( {name: "manchester", startDate: "01.01.2012 - 01.02.2012"}{location: "london", description: "artists +metallica -bieber"} )的搜索引擎将返回所有符合条件的事件,以及来自 artists 的结果/football_teams表。
这些事件的某些属性包含大段文本,应以全文搜索方式进行搜索。
例子:
给定以下搜索条件:

{ location: "london", startDate: "05.11.2012 - 07.11.2012" }
搜索引擎应该返回:
  • (足球赛事)阿森纳vs曼联比赛,酋长球场,伦敦,06.11.2012
  • (演唱会) Metallica 演唱会, Some-Fancy-Location, 05.11.2012
  • (足球队/非赛事)阿森纳,成立:1886年,联赛:英超
  • (足球队/非赛事)切尔西,成立:1905年,联赛:英超
  • (节日事件)伦敦万圣节,07.11.2012
  • (舞蹈事件)萨德勒威尔斯的睡美人,45 英镑,2012 年 11 月 7 日
  • (音乐家,不是事件)Neil Christian,1943 - 2012,摇滚歌手

  • 如您所见,仅在发生事件时才考虑 startDate(事件相关属性)。

    搜索引擎必须扫描大量表格,这就是为什么我认为我应该使用专用软件(Sphinx、Lucene ……?)并为搜索创建单独的索引。

    任何人都可以提出一些建立这样一个索引的解决方案吗?我可以使用什么软件作为该搜索引擎的基础?

    编辑:
    只是为了澄清:不需要任何属性。其中一些包含将使用精确匹配搜索的日期,其中一些包含也将使用精确匹配搜索的短文本(如位置)。但其中一些包含长文本,需要以全文方式进行搜索。

    最佳答案

    我看到了三种方法。

  • 迁移到 Couchdb。使location + start time搜索,您使用 [location, event_start_time] 构建 View 作为关键。在搜索期间,您使用 ?startkey=["london,"05.11.2012"]&endkey=["london", "07.11.2012"] 进行查询。 .在 description 上启用全文搜索,您构建了一个特定的 View ,如 this .
  • 构建 ElasticSearch指数。您示例中的搜索只是使用两个数据字段的结构化查询,其中 location是必须的,还有事件start time是一个范围。 elasticsearch中全文搜索功能更强大,可以定义具体analyzer处理数据中的文本。 Elasticsearch 还支持使用地理空间数据进行搜索。
  • 使用 Amazon CloudSearch .有一些已知的限制。我列出了一些我不喜欢的:
  • 文档大小小于 1MB。
  • 在一个字段中最多可以指定 100 个值。
  • 不开源。

  • 对于搜索实现之间的一些比较:
  • Solr vs. ElasticSearch
  • https://stackoverflow.com/questions/11115523/how-does-amazon-cloudsearch-compares-to-elasticsearch-solr-or-sphinx-in-terms-o
  • http://www.searchenginecaffe.com/2012/04/amazon-cloudsearch-elastic-search-as.html
  • 关于performance - 全文和基于属性的搜索引擎的混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12882000/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com