为简单起见,请考虑两个包含以下字段和值的文档:
RecordId: "12345"
CreatedAt: "27/02/1992"
Event: "Manchester, Dubai, Paris"
Event: "Manchester, Rome, Madrid"
Event: "Madrid, Sidney"
RecordId: "99999"
CreatedAt: "27/02/1992"
Event: "Manchester, Barcelona, Rome"
Event: "Rome, Paris"
Event: "Milan, Barcelona"
是否可以在"事件"的单个实例中搜索多个术语?领域?
让我们说我想搜索"曼彻斯特"和"巴黎"出现在同一个字段中。 第二条记录包含"曼彻斯特"和"巴黎"但是在Event字段的不同实例上,它不应该是结果集的一部分。
理想情况下,结果集只是第一条记录(12345)。
答案 0 :(得分:1)
如何将Event索引为非标记化字段,然后使用KeywordAnalyzer。然后你可以使用Lucene的Regex query来匹配曼彻斯特和巴黎的发生:
Event: "/^.*(Manchester).+(Paris).*$/"
答案 1 :(得分:1)
取决于您用于该字段的分析器(它需要标记并删除标点符号)。你可以使用slop短语查询。
slop定义了允许匹配的短语的“操作”数。这可以是短语中的重新排序或附加条款。
所以“x y”~1可以匹配
根据您的需要,slop可能应该等于字段中允许的最大术语数。我没有完成它,但我认为即使您查询超过2个术语也足够了。