Commit dde4f4d4 authored by Michal Čihař's avatar Michal Čihař

Simplify more like this searching

We can directly grab requested "document" instead of playing with search
results.
parent d71e703c
...@@ -361,27 +361,23 @@ class UnitManager(models.Manager): ...@@ -361,27 +361,23 @@ class UnitManager(models.Manager):
parsed = parser.parse(source_string) parsed = parser.parse(source_string)
checksums = set() checksums = set()
with index as searcher: with index as searcher:
# Search for same string docnum = searcher.document_number(checksum=unit.checksum)
results = searcher.search(parsed) if docnum is None:
if len(results) == 0: # Not yet indexed
return self.none()
first_hit = results[0]
try:
unit = self.filter(checksum=first_hit['checksum'])[0]
except Exception as error:
weblate.logger.error('failed more like this: %s', str(error))
return self.none() return self.none()
# Find similar results to first one more_results = searcher.more_like(
more_results = first_hit.more_like_this( docnum,
'source', 'source',
unit.get_source_plurals()[0], source_string,
top top
) )
# Include all more like this results # Include all more like this results
for result in more_results: for result in more_results:
checksums.add(result['checksum']) checksums.add(result['checksum'])
# Remove all original matches
# Remove all found by same_source
results = searcher.search(parsed)
for result in results: for result in results:
checksums.discard(result['checksum']) checksums.discard(result['checksum'])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment