// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.prelude.query.parser.test;
import com.yahoo.language.Language;
import com.yahoo.prelude.Index;
import com.yahoo.prelude.IndexFacts;
import com.yahoo.prelude.IndexModel;
import com.yahoo.prelude.SearchDefinition;
import com.yahoo.prelude.query.AndItem;
import com.yahoo.prelude.query.AndSegmentItem;
import com.yahoo.prelude.query.CompositeItem;
import com.yahoo.prelude.query.IntItem;
import com.yahoo.prelude.query.Item;
import com.yahoo.prelude.query.NotItem;
import com.yahoo.prelude.query.NullItem;
import com.yahoo.prelude.query.OrItem;
import com.yahoo.prelude.query.PhraseItem;
import com.yahoo.prelude.query.PhraseSegmentItem;
import com.yahoo.prelude.query.PrefixItem;
import com.yahoo.prelude.query.RankItem;
import com.yahoo.prelude.query.SubstringItem;
import com.yahoo.prelude.query.SuffixItem;
import com.yahoo.prelude.query.TaggableItem;
import com.yahoo.prelude.query.TrueItem;
import com.yahoo.prelude.query.WordItem;
import com.yahoo.language.process.SpecialTokens;
import com.yahoo.prelude.query.parser.TestLinguistics;
import com.yahoo.search.Query;
import org.junit.jupiter.api.Test;
import java.util.Iterator;
import static org.junit.jupiter.api.Assertions.*;
/**
* Tests query parsing.
*
* @author bratseth
*/
public class ParseTestCase {
private final ParsingTester tester = new ParsingTester();
@Test
void testSimpleTermQuery() {
tester.assertParsed("foobar", "foobar", Query.Type.ANY);
}
@Test
void testTermWithIndexPrefix() {
tester.assertParsed("url:foobar",
"url:foobar",
Query.Type.ANY);
}
@Test
void testTermWithCatalogAndIndexPrefix() {
tester.assertParsed("normal.title:foobar", "normal.title:foobar", Query.Type.ANY);
}
@Test
void testMultipleTermsWithUTF8EncodingOred() {
tester.assertParsed("OR l\u00e5gen delta M\u00dcNICH M\u00fcnchen",
"l\u00e5gen delta M\u00dcNICH M\u00fcnchen",
Query.Type.ANY);
}
@Test
void testMultipleTermsWithMultiplePrefixes() {
tester.assertParsed("RANK (+bar -normal.title:foo -baz) url:foobar",
"url:foobar +bar -normal.title:foo -baz", Query.Type.ANY);
}
@Test
void testSimpleQueryDefaultOr() {
tester.assertParsed("OR foobar foo bar baz", "foobar foo bar baz", Query.Type.ANY);
}
@Test
void testOrAndNot() {
tester.assertParsed("RANK (+(AND baz bar) -xyzzy -foobaz) foobar foo",
"foobar +baz foo -xyzzy -foobaz +bar", Query.Type.ANY);
}
@Test
void testSimpleOrNestedAnd() {
tester.assertParsed("RANK (OR foo bar baz) foobar xyzzy",
"foobar +(foo bar baz) xyzzy", Query.Type.ANY);
}
@Test
void testSimpleOrNestedNot() {
tester.assertParsed("+(OR foobar xyzzy) -(AND foo bar baz)",
"foobar -(foo bar baz) xyzzy", Query.Type.ANY);
}
@Test
void testOrNotNestedAnd() {
tester.assertParsed("RANK (+(AND baz (OR foo bar baz) bar) -xyzzy -foobaz) foobar foo",
"foobar +baz foo -xyzzy +(foo bar baz) -foobaz +bar",
Query.Type.ANY);
}
@Test
void testOrAndNotNestedNot() {
tester.assertParsed("RANK (+(AND baz bar) -xyzzy -(AND foo bar baz) -foobaz) foobar foo",
"foobar +baz foo -xyzzy -(foo bar baz) -foobaz +bar",
Query.Type.ANY);
}
@Test
void testOrMultipleNestedAnd() {
tester.assertParsed("RANK (AND (OR fo ba foba) (OR foz baraz)) foobar foo bar baz",
"foobar +(fo ba foba) foo bar +(foz baraz) baz",
Query.Type.ANY);
}
@Test
void testOrMultipleNestedNot() {
tester.assertParsed("+(OR foobar foo bar baz) -(AND fo ba foba) -(AND foz baraz)",
"foobar -(fo ba foba) foo bar -(foz baraz) baz",
Query.Type.ANY);
}
@Test
void testOrAndNotMultipleNestedAnd() {
tester.assertParsed("RANK (+(AND baz (OR foo bar baz) (OR foz bazaz) bar) -xyzzy -foobaz) foobar foo",
"foobar +baz foo -xyzzy +(foo bar baz) -foobaz +(foz bazaz) +bar",
Query.Type.ANY);
}
@Test
void testOrAndNotMultipleNestedNot() {
tester.assertParsed("RANK (+(AND baz bar) -xyzzy -(AND foo bar baz) -foobaz -(AND foz bazaz)) foobar foo",
"foobar +baz foo -xyzzy -(foo bar baz) -foobaz -(foz bazaz) +bar",
Query.Type.ANY);
}
@Test
void testOrMultipleNestedAndNot() {
tester.assertParsed("RANK (+(AND (OR ffoooo bbaarr) (OR oof rab raboof)) -(AND fo ba foba) -(AND foz baraz)) foobar foo bar baz",
"foobar -(fo ba foba) foo +(ffoooo bbaarr) bar +(oof rab raboof) -(foz baraz) baz",
Query.Type.ANY);
}
@Test
void testOrAndNotMultipleNestedAndNot() {
tester.assertParsed("RANK (+(AND (OR ffoooo bbaarr) (OR oof rab raboof) baz xyxyzzy) -(AND fo ba foba) -foo -bar -(AND foz baraz)) foobar",
"foobar -(fo ba foba) -foo +(ffoooo bbaarr) -bar +(oof rab raboof) -(foz baraz) +baz +xyxyzzy",
Query.Type.ANY);
}
@Test
void testExplicitPhrase() {
Item root = tester.assertParsed("\"foo bar foobar\"", "\"foo bar foobar\"", Query.Type.ANY);
assertTrue(root instanceof PhraseItem);
assertTrue(((PhraseItem) root).isExplicit());
}
@Test
void testPhraseWithIndex() {
tester.assertParsed("normal.title:\"foo bar foobar\"",
"normal.title:\"foo bar foobar\"", Query.Type.ANY);
}
@Test
void testPhrasesAndTerms() {
tester.assertParsed("OR \"foo bar foobar\" xyzzy \"baz gaz faz\"",
"\"foo bar foobar\" xyzzy \"baz gaz faz\"", Query.Type.ANY);
}
@Test
void testPhrasesAndTermsWithOperators() {
tester.assertParsed("RANK (+(AND \"baz gaz faz\" bazar) -\"foo bar foobar\") foofoo xyzzy",
"foofoo -\"foo bar foobar\" xyzzy +\"baz gaz faz\" +bazar",
Query.Type.ANY);
}
@Test
void testSimpleTermQueryDefaultAnd() {
tester.assertParsed("foobar", "foobar", Query.Type.ALL);
}
@Test
void testTermWithCatalogAndIndexPrefixDefaultAnd() {
tester.assertParsed("normal.title:foobar", "normal.title:foobar", Query.Type.ALL);
}
@Test
void testMultipleTermsWithMultiplePrefixesDefaultAnd() {
tester.assertParsed("+(AND url:foobar bar) -normal.title:foo -baz",
"url:foobar +bar -normal.title:foo -baz",
Query.Type.ALL);
}
@Test
void testSimpleQueryDefaultAnd() {
tester.assertParsed("AND foobar foo bar baz", "foobar foo bar baz", Query.Type.ALL);
}
@Test
void testNotDefaultAnd() {
tester.assertParsed("+(AND foobar (OR foo bar baz) xyzzy) -(AND foz baraz bazar)",
"foobar +(foo bar baz) xyzzy -(foz baraz bazar)",
Query.Type.ALL);
}
@Test
void testSimpleTermQueryDefaultPhrase() {
tester.assertParsed("foobar",
"foobar",
Query.Type.PHRASE);
}
@Test
void testSimpleQueryDefaultPhrase() {
Item root = tester.assertParsed("\"foobar foo bar baz\"",
"foobar foo bar baz",
Query.Type.PHRASE);
assertTrue(root instanceof PhraseItem);
assertFalse(((PhraseItem) root).isExplicit());
}
@Test
void testMultipleTermsWithMultiplePrefixesDefaultPhrase() {
tester.assertParsed("\"url foobar bar normal title foo baz\"",
"url:foobar +bar -normal.title:foo -baz",
Query.Type.PHRASE);
}
@Test
void testOdd1() {
tester.assertParsed("AND window print error", "+window.print() +error",
Query.Type.ALL);
}
没有合适的资源?快使用搜索试试~ 我知道了~
矢量数据库:它存储和索引您的结构化、文本和矢量数据,以便查询、选择和处理以及机器学习模型推理可以在任何规模的服务时间内快速执行
共2000个文件
java:1577个
xml:157个
cpp:62个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 111 浏览量
2024-03-26
09:43:59
上传
评论
收藏 123.53MB ZIP 举报
温馨提示
一个为需要在大数据集上进行低延迟计算的应用程序提供的平台。它存储和索引您的结构化、文本和矢量数据,以便查询、选择和处理以及机器学习模型推理可以在任何规模的服务时间内快速执行。可以使用托管在Vespa中的应用程序组件定制和扩展功能。
资源推荐
资源详情
资源评论
收起资源包目录
矢量数据库:它存储和索引您的结构化、文本和矢量数据,以便查询、选择和处理以及机器学习模型推理可以在任何规模的服务时间内快速执行 (2000个子文件)
values.cpp 51KB
invoke.cpp 18KB
transport_thread.cpp 16KB
sharedblob.cpp 9KB
supervisor.cpp 9KB
connect_test.cpp 8KB
transport.cpp 8KB
values_test.cpp 8KB
packets.cpp 8KB
packetqueue.cpp 7KB
detach_supervisor_test.cpp 7KB
examples_test.cpp 7KB
scheduler.cpp 6KB
parallel_rpc_test.cpp 6KB
databuffer.cpp 6KB
method_pt.cpp 6KB
lockspeed.cpp 6KB
reflection.cpp 6KB
invoker.cpp 6KB
castspeed.cpp 5KB
tls_rpc_bench.cpp 5KB
splunk-starter.cpp 5KB
test-errors.cpp 5KB
extract-reflection.cpp 4KB
transport_debugger_test.cpp 4KB
schedule.cpp 4KB
rpcrequest.cpp 4KB
connection_spread_test.cpp 3KB
drainpackets.cpp 3KB
cf-handler.cpp 3KB
info.cpp 3KB
child-handler.cpp 3KB
databuffer.cpp 3KB
error.cpp 3KB
simpleserver.cpp 3KB
thread_selection_test.cpp 3KB
echo-client.cpp 2KB
detach_return_invoke.cpp 2KB
require_capabilities.cpp 2KB
controlpacket.cpp 2KB
connector.cpp 2KB
iocomponent.cpp 2KB
channellookup.cpp 2KB
printstuff_test.cpp 2KB
transport_debugger.cpp 2KB
info.cpp 2KB
mockup-server.cpp 2KB
simplepacketstreamer.cpp 2KB
main.cpp 1KB
sync_execute.cpp 1KB
sloweventloop.cpp 1KB
dummypacket.cpp 888B
timespeed.cpp 878B
target.cpp 775B
signalshutdown.cpp 747B
task.cpp 732B
channel.cpp 638B
splunk-stopper.cpp 540B
packet.cpp 526B
context.cpp 404B
config.cpp 371B
dummy.cpp 232B
transport_thread.h 17KB
packetqueue.h 7KB
values.h 7KB
iocomponent.h 7KB
packet.h 5KB
reflection.h 4KB
scheduler.h 4KB
supervisor.h 4KB
invoker.h 4KB
channel.h 3KB
rpcrequest.h 3KB
channellookup.h 3KB
controlpacket.h 3KB
packets.h 3KB
connector.h 2KB
ipackethandler.h 2KB
task.h 2KB
simplepacketstreamer.h 2KB
context.h 2KB
info.h 1KB
dummypacket.h 1KB
iserveradapter.h 1KB
require_capabilities.h 1KB
target.h 1KB
error.h 875B
cf-handler.h 872B
request_access_filter.h 808B
invokable.h 578B
signalshutdown.h 546B
config.h 536B
splunk-starter.h 480B
child-handler.h 415B
splunk-stopper.h 410B
isharedblob.h 361B
dummy.h 246B
my_crypto_engine.hpp 2KB
status.html 0B
ParseTestCase.java 93KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
UnknownToKnown
- 粉丝: 1w+
- 资源: 616
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功