0

假设我的网站上有一个搜索表单,它生成一个查询字符串来过滤结果,例如。mysite/search?field1=value1&field2=value2&field3=value3

用户在搜索字段中输入以下内容:

Field 1 = Cat
Field 2 = Black
Field 3 = Stray

鉴于查询字符串的性质,所有三个字段值都必须存在于正在搜索的项目中,以便将其识别为匹配项。对吗?

有没有办法让“&”成为“或”,这样任何匹配的字段都会返回结果。

或者

有没有办法匹配最近的结果?IE。删除字符串对,直到找到匹配项,或者以某种方式找到下一个最接近的结果。

例如。如果用户输入“Cat”、“Black”和“Stray”,并且有一个项目包含所有三个值,则返回该结果(标准响应)。如果没有包含所有三个值的项目,假设只有一个具有“Cat”和“Stray”的项目,它会识别没有包含所有三个值的项目,所以它会寻找两个字段值匹配?

很高兴考虑任何防止“找不到项目”的想法,并且至少渲染一些东西而不是什么都没有。

4

1 回答 1

0

这取决于您用于过滤的内容,但一般的想法是在过滤数据后检查它是否为空,如果是,则删除一个过滤器再次进行过滤。例如这样的事情:

result = filter(data,filters);
while(!result || filters.length > 0){
  filters.pop();
  result = filter(data, filters);
}

不工作的代码,只是一般的想法。

于 2016-12-08T09:04:05.717 回答