Python 如何设置搜索自动完成零件列表的格式?

Python 如何设置搜索自动完成零件列表的格式?,python,google-app-engine,search,autocomplete,autosuggest,Python,Google App Engine,Search,Autocomplete,Autosuggest,我目前正在从事一个AppEngine项目,我想实现搜索词的自动完成。可以搜索的项目是相当明确和简短的,所以我想通过给每个项目一个不完整的打字列表来实现它。所以foobar会得到一个类似[f,fo,foo,foob,fooba,foobar]的列表。然后将搜索框中的用户文本与此列表进行比较,并建议进行积极匹配 在此列表中,我考虑了几个可能的优化: 从搜索词中删除空格和标点符号Foo。条形图至FooBar 删除大写字母 移除像“the”、“a”、“an”这样的引导粒子这个家伙将是家伙,索引为[g,

我目前正在从事一个AppEngine项目,我想实现搜索词的自动完成。可以搜索的项目是相当明确和简短的,所以我想通过给每个项目一个不完整的打字列表来实现它。所以
foobar
会得到一个类似
[f,fo,foo,foob,fooba,foobar]
的列表。然后将搜索框中的用户文本与此列表进行比较,并建议进行积极匹配

在此列表中,我考虑了几个可能的优化:

  • 从搜索词中删除空格和标点符号<代码>Foo。条形图至
    FooBar
  • 删除大写字母
  • 移除像“the”、“a”、“an”这样的引导粒子<代码>这个家伙将是
    家伙
    ,索引为
    [g,gu,Guy]
  • 仅将长度大于2或3的子字符串添加到索引列表中。因此,
    这个家伙
    将被索引为
    [gu,Guy]
    。我认为只与第一个字母匹配的建议就没有那么重要了
用户搜索词也将以这种方式格式化,然后搜索数据库。建议搜索词时,将根据建议对象的全名添加粒子、标点符号和大写字母。因此,搜索“the”不会给出任何建议,但搜索“the Gu..”或“Gu”会给出“the Guy”


这是个好主意吗?主要是:这种格式会有帮助,还是只会带来麻烦?

我已经遇到了同样的问题,我采用的解决方案与您的想法非常相似。我将项目拆分为单词,将其转换为小写,删除重音,并创建一个开始列表。例如,
“Báz Bar”
将变成
['B','ba','Bar','baz']


我已经把代码贴在这张照片上了。搜索框正在使用它。如果您愿意,可以随意使用。

在空格上拆分单词有用吗?当用户在搜索框中键入两个单词时,如何匹配字符串?是否需要对每个单词进行单独的DB查询?就像开始中的
word1+开始中的word2+word3等等。
No,实际上你可以为每个单词级联一个过滤器:
query.filter('start'='word1')。filter('start=','word2')