首页 > 解决方案 > 查询以提升作为查询的适当子集的记录或查询是记录的适当子集?

问题描述

在我的领域中,查询通常不如文档所需字段中的信息具体,相反,文档可能不如查询具体。但是,如果查询和记录都相对具体且不匹配,则通常是质量较差的匹配。

因此,如果有人查询“汽车”,我可以返回“红色汽车”。如果有人查询“黑色汽车”,我可以返回“汽车”。但是,对于查询“黑色汽车”,“红色汽车”是不可接受的。

是否可以创建一个查询,使得与文档匹配的短语是文档该字段中信息的子集,反之亦然?

标签: elasticsearch

解决方案


你玩过本体吗?

今天,这些被用于解决与您类似的问题。

本体是“上下文的形式表示,其中世界实体由类表示,而这些类又是相互关联的——这些实体可以被实例化”(过度简化的解释)。https://en.wikipedia.org/wiki/Ontology_(information_science)

看起来很像面向对象编程,但与数据建模方法更相关。例如,您可以有一个“汽车”类,并制作红色和黑色实例。您可以添加约束并查询您的本体以获取此信息(例如,如果您是推荐系统,您有链接到红色或黑色汽车报价的端点)。

当然,本体和特定工具(Protégé、OWL、Turtle 等)有一些形式化,但您可以使用任何技术,例如,如前所述,ElasticSearch、图形数据库(Neo4j、ArangoDB)等。您只需要建模您的相应的数据。

另外,请记住,如其他答案中所述,您可能已经将自然语言处理应用于查询以检索“有问题的类”和“属性”。

这些是您可以用来构建持久、智能的结构的一些想法。


推荐阅读