Python 如何设置搜索自动完成零件列表的格式?
我目前正在从事一个AppEngine项目,我想实现搜索词的自动完成。可以搜索的项目是相当明确和简短的,所以我想通过给每个项目一个不完整的打字列表来实现它。所以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,
foobar
会得到一个类似[f,fo,foo,foob,fooba,foobar]
的列表。然后将搜索框中的用户文本与此列表进行比较,并建议进行积极匹配
在此列表中,我考虑了几个可能的优化:
- 从搜索词中删除空格和标点符号<代码>Foo。条形图至
FooBar
- 删除大写字母
- 移除像“the”、“a”、“an”这样的引导粒子<代码>这个家伙将是
,索引为家伙
[g,gu,Guy]
- 仅将长度大于2或3的子字符串添加到索引列表中。因此,
将被索引为这个家伙
。我认为只与第一个字母匹配的建议就没有那么重要了[gu,Guy]
这是个好主意吗?主要是:这种格式会有帮助,还是只会带来麻烦?我已经遇到了同样的问题,我采用的解决方案与您的想法非常相似。我将项目拆分为单词,将其转换为小写,删除重音,并创建一个开始列表。例如,
“Báz Bar”
将变成['B','ba','Bar','baz']
我已经把代码贴在这张照片上了。搜索框正在使用它。如果您愿意,可以随意使用。在空格上拆分单词有用吗?当用户在搜索框中键入两个单词时,如何匹配字符串?是否需要对每个单词进行单独的DB查询?就像开始中的
word1+开始中的word2+word3等等。
No,实际上你可以为每个单词级联一个过滤器:query.filter('start'='word1')。filter('start=','word2')代码>