根据午餐会的正式文件:
“还支持多个词的搜索。如果一个文档至少匹配其中一个搜索项,它将显示在结果中。搜索项与OR组合。”
只有当一个文档与所有的匹配时,搜索条件才会显示结果,那么有什么方法可以做到这一点呢?
将这些数据编入索引:
[
{id: 1, text: "foo", body: "jander"}
{id: 2, text: "bar", body: "clander"},
{id: 3, text: "foo bar", body: "jander crispy clander"}
{id: 4, text: "foz", body: "lorem ipsum"}
...
]如果你通过以下方式搜索:
idx.search("foo jander clander");我希望只有一个结果忽略另外两个,因为它们不包含所有的术语,而只包含几个:
// found (1)
{id: 3, text: "foo bar", body: "jander crispy clander"}但我拥有的是:
// found (3)
{id: 1, text: "foo", body: "jander"}
{id: 2, text: "bar", body: "clander"},
{id: 3, text: "foo bar", body: "jander crispy clander"}谢谢您提供的任何信息。
发布于 2018-05-02 20:43:39
您提到的拉请求已在2.2.0版本中合并并发布。
隆尔称这个词为“存在”。您还不能(还)直接将术语与布尔运算符(例如foo AND bar )组合在一起,而是指示查询中是否存在术语。默认情况下,术语有可选的存在,但现在也可以将其标记为必需的或禁止的。
用于搜索的文档(指南,api接口)已经更新,但是对于特定的示例,您可以将查询表述为:
idx.search("+foo +jander +clander")这也是通过更低级别的查询api公开的:
idx.query(function (q) {
q.term("foo", { presence: lunr.Query.presence.REQUIRED })
q.term("jander", { presence: lunr.Query.presence.REQUIRED })
q.term("clander", { presence: lunr.Query.presence.REQUIRED })
})https://stackoverflow.com/questions/49946734
复制相似问题