elasticsearch - 查询以提升作为查询的适当子集的记录或查询是记录的适当子集?
问题描述
在我的领域中,查询通常不如文档所需字段中的信息具体,相反,文档可能不如查询具体。但是,如果查询和记录都相对具体且不匹配,则通常是质量较差的匹配。
因此,如果有人查询“汽车”,我可以返回“红色汽车”。如果有人查询“黑色汽车”,我可以返回“汽车”。但是,对于查询“黑色汽车”,“红色汽车”是不可接受的。
是否可以创建一个查询,使得与文档匹配的短语是文档该字段中信息的子集,反之亦然?
解决方案
你玩过本体吗?
今天,这些被用于解决与您类似的问题。
本体是“上下文的形式表示,其中世界实体由类表示,而这些类又是相互关联的——这些实体可以被实例化”(过度简化的解释)。https://en.wikipedia.org/wiki/Ontology_(information_science)
看起来很像面向对象编程,但与数据建模方法更相关。例如,您可以有一个“汽车”类,并制作红色和黑色实例。您可以添加约束并查询您的本体以获取此信息(例如,如果您是推荐系统,您有链接到红色或黑色汽车报价的端点)。
当然,本体和特定工具(Protégé、OWL、Turtle 等)有一些形式化,但您可以使用任何技术,例如,如前所述,ElasticSearch、图形数据库(Neo4j、ArangoDB)等。您只需要建模您的相应的数据。
另外,请记住,如其他答案中所述,您可能已经将自然语言处理应用于查询以检索“有问题的类”和“属性”。
这些是您可以用来构建持久、智能的结构的一些想法。
推荐阅读
- dashboard - Apache Superset 是否支持或具有类似 Tableau 中的操作筛选器功能?
- javascript - Aria 和 a11y 技术不适用于 Angular
- hadoop - HortonWorks 或 Cloudera 认证
- c# - 如何在gridview中显示当前记录的用户数据
- javascript - 如何使用 nano 库在 CouchDB 中使用过滤器复制数据
- laravel - 我怎样才能返回一个雄辩的关系,但只选择不为空的列?
- python - AttributeError: 模块 'fuzzywuzzy' 没有属性 'ratio'
- bash - VScode 终端似乎没有在 Windows 上加载 .bashrc 或 .bash_profile
- scala - 如何在Scala中检查Option是否为None
- r - r markdown 中的内联代码按“原样”打印