Better testing for whitespace in term indexing

This commit is contained in:
David Sauve 2010-03-11 12:11:14 -05:00
parent 962585a40d
commit 41762d7c42
2 changed files with 14 additions and 17 deletions

View file

@ -398,7 +398,7 @@ class XapianSearchBackendTestCase(TestCase):
def test_parse_query(self):
self.backend.update(self.index, self.sample_objs)
self.assertEqual(self.backend.parse_query('indexed').get_description(), 'Xapian::Query((indexed:(pos=1) OR indexed!\n1:(pos=1) OR indexed!\n2:(pos=1) OR indexed!\n3:(pos=1) OR Zindex:(pos=1)))')
self.assertEqual(self.backend.parse_query('indexed').get_description(), 'Xapian::Query((indexed:(pos=1) OR Zindex:(pos=1)))')
self.assertEqual(self.backend.parse_query('name:david').get_description(), 'Xapian::Query((XNAMEdavid1:(pos=1) OR XNAMEdavid2:(pos=1) OR XNAMEdavid3:(pos=1) OR ZXNAMEdavid:(pos=1)))')
self.assertEqual(self.backend.parse_query('name:da*').get_description(), 'Xapian::Query((XNAMEdavid1:(pos=1) OR XNAMEdavid2:(pos=1) OR XNAMEdavid3:(pos=1)))')
self.assertEqual(self.backend.parse_query('name:david1..david2').get_description(), 'Xapian::Query(VALUE_RANGE 0 david1 david2)')

View file

@ -9,7 +9,6 @@ import cPickle as pickle
import os
import re
import shutil
import string
import sys
import warnings
@ -214,33 +213,31 @@ class SearchBackend(BaseSearchBackend):
if field['type'] == 'text':
if field['multi_valued'] == 'false':
term = _marshal_term(value)
if term:
term_generator.index_text(term)
term_generator.index_text(term, 1, prefix)
if not string.whitespace in term:
document.add_term(term)
document.add_term(prefix + term)
document.add_value(field['column'], _marshal_value(value))
term_generator.index_text(term)
term_generator.index_text(term, 1, prefix)
if len(term.split()) == 1:
document.add_term(term)
document.add_term(prefix + term)
document.add_value(field['column'], _marshal_value(value))
else:
for term in value:
term = _marshal_term(term)
if term:
term_generator.index_text(term)
term_generator.index_text(term, 1, prefix)
if not string.whitespace in term:
document.add_term(term)
document.add_term(prefix + term)
term_generator.index_text(term)
term_generator.index_text(term, 1, prefix)
if len(term.split()) == 1:
document.add_term(term)
document.add_term(prefix + term)
else:
if field['multi_valued'] == 'false':
term = _marshal_term(value)
if term:
if len(term.split()) == 1:
document.add_term(term)
document.add_term(prefix + term)
document.add_value(field['column'], _marshal_value(value))
else:
for term in value:
term = _marshal_term(term)
if term:
if len(term.split()) == 1:
document.add_term(term)
document.add_term(prefix + term)