summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2022-04-18 11:21:24 -0700
committerScott Gasch <[email protected]>2022-04-18 11:21:24 -0700
commit001b734eb651c819d880df1017829bd54d7c16f7 (patch)
treefd9b8a7b480ed26999481c102327f3f89f93db78
parent24b9bcb2a4b74d2c242c8b4172f295b57c09b46d (diff)
Improve wildcard semantics again.
-rw-r--r--logical_search.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/logical_search.py b/logical_search.py
index 0cfbc8d..2f79db0 100644
--- a/logical_search.py
+++ b/logical_search.py
@@ -108,6 +108,8 @@ class Corpus(object):
{1, 2, 3}
>>> c.query('*:*')
{1, 2, 3}
+ >>> c.query('*:Scott')
+ {1, 3}
"""
def __init__(self) -> None:
@@ -360,10 +362,12 @@ class Node(object):
key, value = tag.split(":")
except ValueError as v:
raise ParseError(f'Invalid key:value syntax at "{tag}"') from v
+
if key == '*':
r = set()
- for s in self.corpus.docids_by_tag.values():
- r.update(s)
+ for kv, s in self.corpus.docids_by_property.items():
+ if value in ('*', kv[1]):
+ r.update(s)
else:
if value == '*':
r = self.corpus.get_docids_with_property(key)