projects
/
python_utils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Improve wildcard semantics again.
[python_utils.git]
/
logical_search.py
diff --git
a/logical_search.py
b/logical_search.py
index 0cfbc8d22624bffe9bc227e3ffde0abc0f313053..2f79db09d83dbe0b14e2ab6323e107f31384e148 100644
(file)
--- a/
logical_search.py
+++ b/
logical_search.py
@@
-108,6
+108,8
@@
class Corpus(object):
{1, 2, 3}
>>> c.query('*:*')
{1, 2, 3}
{1, 2, 3}
>>> c.query('*:*')
{1, 2, 3}
+ >>> c.query('*:Scott')
+ {1, 3}
"""
def __init__(self) -> None:
"""
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
key, value = tag.split(":")
except ValueError as v:
raise ParseError(f'Invalid key:value syntax at "{tag}"') from v
+
if key == '*':
r = set()
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)
else:
if value == '*':
r = self.corpus.get_docids_with_property(key)