aboutsummaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/logging/Spooler.java10
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java4
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/EquivTestCase.java35
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java8
5 files changed, 47 insertions, 12 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java b/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java
index 80ff967f779..d8e656d1b2b 100644
--- a/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java
+++ b/container-search/src/main/java/com/yahoo/search/logging/LoggerEntry.java
@@ -135,7 +135,7 @@ public class LoggerEntry {
return logger.send(new LoggerEntry(this));
}
- LoggerEntry build() {
+ public LoggerEntry build() {
return new LoggerEntry(this);
}
diff --git a/container-search/src/main/java/com/yahoo/search/logging/Spooler.java b/container-search/src/main/java/com/yahoo/search/logging/Spooler.java
index 921b8f444f1..cf750fd9d8a 100644
--- a/container-search/src/main/java/com/yahoo/search/logging/Spooler.java
+++ b/container-search/src/main/java/com/yahoo/search/logging/Spooler.java
@@ -85,10 +85,10 @@ public class Spooler {
public void processFiles(Function<LoggerEntry, Boolean> transport) throws IOException {
List<Path> files = listFilesInPath(readyPath);
if (files.size() == 0) {
- log.log(Level.FINEST, "No files in ready path " + readyPath.toFile().getAbsolutePath());
+ log.log(Level.FINEST, () -> "No files in ready path " + readyPath.toFile().getAbsolutePath());
return;
}
- log.log(Level.FINE, "Files in ready path: " + files.size());
+ log.log(Level.FINE, () -> "Files in ready path: " + files.size());
List<File> fileList = getFiles(files);
if ( ! fileList.isEmpty()) {
@@ -116,7 +116,7 @@ public class Spooler {
List<String> lines = Files.readAllLines(f.toPath());
for (String line : lines) {
LoggerEntry entry = LoggerEntry.deserialize(line);
- log.log(Level.FINE, "Read entry " + entry + " from " + f);
+ log.log(Level.FINE, () -> "Read entry " + entry + " from " + f);
success = transport.apply(entry);
if (! success) {
throw new RuntimeException("Unable to process file " + f + ": unsuccessful call to transport() for " + entry);
@@ -190,7 +190,7 @@ public class Spooler {
String fileName = currentFileName();
Path file = spoolPath.resolve(processingPath).resolve(fileName);
try {
- log.log(Level.FINE, "Writing entry " + entryCounter.get() + " (" + entry.serialize() + ") to file " + fileName);
+ log.log(Level.FINE, () -> "Writing entry " + entryCounter.get() + " (" + entry.serialize() + ") to file " + fileName);
Files.writeString(file, entry.serialize() + "\n", StandardOpenOption.WRITE, StandardOpenOption.APPEND, StandardOpenOption.CREATE);
firstWriteTimestamp.compareAndExchange(Instant.EPOCH, clock.instant());
entryCounter.incrementAndGet();
@@ -242,7 +242,7 @@ public class Spooler {
if (file.exists() && file.canRead() && file.canWrite()) {
log.log(Level.INFO, "Directory " + path + " already exists");
} else if (file.mkdirs()) {
- log.log(Level.FINE, "Created " + path);
+ log.log(Level.FINE, () -> "Created " + path);
} else {
log.log(Level.WARNING, "Could not create " + path + ", please check permissions");
}
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java
index 3edad64f9f2..3dfa278662d 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/NGramSearcher.java
@@ -135,14 +135,14 @@ public class NGramSearcher extends Searcher {
* Creates the root of the query subtree which will contain the grams to match,
* called by {@link #splitToGrams}. This hook is provided to make it easy to create a subclass which
* matches grams using a different composite item, e.g an OrItem.
- * <p>
+ *
* This default implementation returns createGramRoot(query).
*
* @param term the term item this gram root is replacing in the query tree,
* typically used to access the index name of the term when that is required by the new gram root
* (such as in PhraseItem)
* @param query the input query, to make it possible to return a different composite item type
- * depending on the query content
+ * depending on the query content
* @return the composite item to add the gram items to in {@link #splitToGrams}
*/
protected CompositeItem createGramRoot(HasIndexItem term, Query query) {
diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/EquivTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/EquivTestCase.java
new file mode 100644
index 00000000000..3e2c634b7f2
--- /dev/null
+++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/EquivTestCase.java
@@ -0,0 +1,35 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.prelude.semantics.test;
+
+import org.junit.jupiter.api.Test;
+
+/**
+ * @author bratseth
+ */
+public class EquivTestCase extends RuleBaseAbstractTestCase {
+
+ public EquivTestCase() {
+ super("equiv.sr");
+ }
+
+ @Test
+ void testEquiv() {
+ assertSemantics("EQUIV \"lord of the rings\" lotr", "lotr");
+ }
+
+ @Test
+ void testEquivWithFollowingQuery() {
+ assertSemantics("AND (EQUIV \"lord of the rings\" lotr) is a movie", "lotr is a movie");
+ }
+
+ @Test
+ void testEquivWithPrecedingQuery() {
+ assertSemantics("AND a movie is (EQUIV \"lord of the rings\" lotr)", "a movie is lotr");
+ }
+
+ @Test
+ void testEquivWithSurroundingQuery() {
+ assertSemantics("AND a movie is (EQUIV \"lord of the rings\" lotr) yes", "a movie is lotr yes");
+ }
+
+}
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java
index 49449153d1f..4d25ebdccff 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/test/NGramSearcherTestCase.java
@@ -334,15 +334,15 @@ public class NGramSearcherTestCase {
Result r = new Execution(new Chain<>(createSearcher(), new MockBackend1()), createContextStub(createIndexFacts())).search(q);
Hit h1 = r.hits().get("hit1");
assertEquals("Should be untouched,\u001feven if containing \u001f",
- h1.getField("test").toString());
+ h1.getField("test").toString());
assertTrue(h1.getField("test") instanceof String);
assertEquals("Blue red Ed A", h1.getField("gram2").toString());
assertTrue(h1.getField("gram2") instanceof XMLString);
assertEquals("Blue red ed a\u001f",
- h1.getField("gram3").toString(),
- "Separators on borders work");
+ h1.getField("gram3").toString(),
+ "Separators on borders work");
assertTrue(h1.getField("gram3") instanceof String);
Hit h2 = r.hits().get("hit2");
@@ -352,7 +352,7 @@ public class NGramSearcherTestCase {
Hit h3 = r.hits().get("hit3");
assertEquals("\u001ffin\u001f \u001fen\u001f \u001fa\u001f", h3.getField("gram2").toString());
assertEquals("#Logging in #Java is like that \"Judean P\u001fopul\u001far Front\" scene from \"Life of Brian\".",
- h3.getField("gram3").toString());
+ h3.getField("gram3").toString());
}
private Item parseQuery(String query, Query.Type type) {