【问题标题】:Including boolean values in Neo4j FullText Search Index在 Neo4j 全文搜索索引中包含布尔值
【发布时间】:2020-02-03 04:49:44
【问题描述】:

我有一个关于节点属性的全文索引。查询效果很好。我正在使用它通过 Angular UI 实现搜索。例如,下面返回所有具有报告类型且名称值为“account:

”的节点

类型:报告和名称:帐户

但是,我针对布尔节点存储了一些值,例如真假。一个示例是派生属性,其中派生是真/假或不作为属性存在。

我希望能够通过这种方式使用lucene进行查询:

类型:报告 AND 名称:帐户 AND 派生:true

但是,针对布尔值的查询不起作用。我期待它,因为索引只考虑字符串并忽略布尔值。有没有办法解决这个问题,或者我需要更改我的模型以将布尔值存储为文本?

鉴于搜索字符串是从 Angular 应用程序中的单个搜索框返回的,我无法真正创建第二个索引(没有很多复杂性)。

非常感谢 迈克尔

【问题讨论】:

  • 您可以根据“派生”属性从全文搜索中过滤结果节点以获得预期结果

标签: neo4j lucene cypher


【解决方案1】:
CALL db.index.fulltext.queryNodes("indexName", "query") YIELD node, score
WHERE node.derived = $userEnteredValue
RETURN node.requiredProperty , score ORDER BY score DESC 

在进行全文搜索后,我根据布尔属性过滤了节点。希望对您有所帮助。

【讨论】:

  • 感谢您的回复。它没有帮助。它只是在返回的结果上添加一个过滤子句并完全跳过全文功能。
  • 我们在应用过滤器之前进行全文搜索
  • 是的。但目的是一个搜索引擎,因此用户可能会搜索derived:true 或者他们也可能将derived:false 放入他们的搜索查询中。
  • 好的,用户可以使用派生的 .i 进行查询,假设它是固定的。在这种情况下 。您必须在查询时将其作为属性传递(更新答案)
  • 它仍然没有真正的帮助。我试图理解的是为什么它一开始就不起作用。人们通常如何处理这个问题。除了对查询返回的结果应用硬编码过滤器之外,还有哪些选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 2015-01-17
相关资源
最近更新 更多