如何格式化搜索自动完成部件列表?

时间:2010-01-18 23:15:59

标签: python google-app-engine search autocomplete autosuggest

我目前正在开发一个AppEngine项目,我想实现搜索术语的自动完成。可以搜索的是合理的明确和简短的,所以我想通过给每个列出不完整的类型来实现它。因此,foobar会获得类似[f, fo, foo, foob, fooba, foobar]的列表。然后将搜索框中的用户文本与此列表进行比较,并建议使用正匹配。

我想到的是这个列表中有几种可能的优化:

  • 从搜索字词中删除空格标点符号。 Foo. BarFooBar
  • 删除大写字母
  • 删除“the”,“a”,“an”等前导粒子。 The Guyguy,索引为[g, gu, guy]
  • 仅将超过2或3的子字符串添加到索引列表中。因此,The Guy将被编入索引为[gu, guy]。我认为只与第一个字母相匹配的建议不会那么相关。

用户搜索词也将以这种方式格式化,然后搜索数据库。在建议搜索词时,将根据建议对象的全名添加粒子,标点符号和大写字母。所以搜索“the”不会给出任何建议,但是搜索“The Gu ..”或“gu”会暗示“The Guy”。

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

1 个答案:

答案 0 :(得分:2)

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

我已在此thread中发布了代码。搜索框of this site正在使用它。如果你愿意,可以随意使用它。