public void Visit(ContainsNode node) { var right = Nodes.Pop(); var left = Nodes.Pop(); Nodes.Push(new ContainsNode(left, right as ArgsListNode)); }
protected virtual QueryNode VisitContains(ContainsNode node, ElasticSearchQueryOptimizerState state) { state.Boost = 1f; var node2 = Visit(node.LeftNode, state); return(new ContainsNode(node2, Visit(node.RightNode, state), state.Boost)); }
public void C10_rootContainsTest() { ContainsNode root = new ContainsNode("root", null, true); Assert.AreNotEqual(null, root); Assert.AreEqual(0, root.getNbDocuments()); Assert.AreEqual(null, root.next()); Assert.AreEqual("root", root.getName()); Assert.AreEqual(null, root.getParent()); }
// TODO: ProcessAsVirtualField? Solr does this, but not Lucene protected QueryBase VisitContains(ContainsNode node, ElasticQueryMapperState state) { // TODO: Move these 3 lines to separate method for reuse? var fieldName = GetFormattedFieldName(node); var valueNode = node.GetValueNode <string>(); var value = ValueFormatter.FormatValueForIndexStorage(valueNode.Value, fieldName); // TODO: Use WildcardQuery if it's a keyword field, other wise if full-text field use MatchQuery? return(new WildcardQuery { Field = fieldName, Value = "*" + value.ToStringOrEmpty() + "*", Boost = node.Boost }); }
protected virtual BaseQuery HandleContains(ContainsNode node, ElasticSearchQueryMapperState state) { var fieldName = GetFormattedFieldName(node); var valueNode = QueryHelper.GetValueNode <string>(node); //wildcard query values should be lowercase, even if the value is stored case-sensitively //not sure why it needs to be this way - and there's probably some way to make it work either way using analyzers... var queryValue = ValueFormatter.FormatValueForIndexStorage(valueNode.Value).ToString().ToLowerInvariant(); //TODO: evidently, wildcard queries do not scale well for large indexes //therefore, this query should be replaced with something else. //rumor has it the use of n-gram analyzers and regular term queries works better than wildcard queries. //question is, how to do this in generic terms so that it works "out of the box"? //probably an easy way, just not today... return(Query.Wildcard(fieldName, "*" + queryValue + "*")); }
public void C11_rootChildrensContainsTest() { ContainsNode root = new ContainsNode("root", null, true); ContainsNode child1 = new ContainsNode("child1", root, true); ContainsNode child11 = new ContainsNode("child11", child1, true); ContainsNode child2 = new ContainsNode("child2", root, true); ContainsNode child21 = new ContainsNode("child21", child2, true); ContainsNode child22 = new ContainsNode("child22", child2, true); Assert.AreEqual("child11", child11.getName(), "child11.getDocumentName()"); Assert.AreEqual("child1", child11.getParent().getName(), "child11.getParent()"); Assert.AreEqual("child22", child22.getName(), "child22.getDocumentName()"); Assert.AreEqual("child2", child22.getParent().getName(), "child22.getParent()"); Assert.AreEqual("child2", child2.getName(), "child2.getDocumentName()"); Assert.AreEqual("root", child2.getParent().getName(), "child2.getParent()"); }
public void C15_getRelativeContextTest() { ContainsNode root = new ContainsNode("root", null, true); ContainsNode A_1 = root.addNewNode("A[#1]", true); ContainsNode AA_1 = A_1.addNewNode("AA", false); AA_1.addNewNode("AAA[#1]", true); AA_1.addNewNode("AAA[#2]", true); ContainsNode tst_1 = AA_1.addNewNode("AAA[#3]", true); ContainsNode BB_1 = A_1.addNewNode("BB", true); BB_1.addNewNode("BBB[#1]", true); ContainsNode tst_2 = BB_1.addNewNode("BBB[#2]", true); BB_1.addNewNode("BBB[#3]", true); ContainsNode A_2 = root.addNewNode("A[#2]", false); ContainsNode AA_2 = A_2.addNewNode("AA", false); ContainsNode tst_3 = AA_2.addNewNode("AAA[#1]", true); AA_2.addNewNode("AAA[#2]", true); AA_2.addNewNode("AAA[#3]", true); ContainsNode BB_2 = A_2.addNewNode("BB", true); BB_2.addNewNode("BBB[#1]", true); BB_2.addNewNode("BBB[#2]", true); BB_2.addNewNode("BBB[#3]", true); ContainsNode tst_4 = BB_2.addNewNode("BBB[#4]", true); Assert.AreEqual("A[#1]//AAA[#3]", tst_1.getRelativeContext(), false, "tst_1.getRelativeContext()"); Assert.AreEqual("A[#1]//BBB[#2]", tst_2.getRelativeContext(), false, "tst_2.getRelativeContext()"); Assert.AreEqual("A[#2]//AAA[#1]", tst_3.getRelativeContext(), false, "tst_3.getRelativeContext()"); Assert.AreEqual("A[#2]//BBB[#4]", tst_4.getRelativeContext(), false, "tst_4.getRelativeContext()"); }
public void Visit(ContainsNode node) { node.Left.Accept(this); node.Right.Accept(this); node.Accept(_visitor); }
protected virtual QueryNode VisitContains(ContainsNode node, AzureQueryOptimizerState state) { return((QueryNode) new ContainsNode(this.Visit(node.LeftNode, state), this.Visit(node.RightNode, state), state.Boost)); }
public void Visit(ContainsNode node) { }