代码之家  ›  专栏  ›  技术社区  ›  Christian

Android数据搜索

  •  2
  • Christian  · 技术社区  · 14 年前

    目前,我希望数据库中有三列用于注释:

    ID | Title | Content
    

    这个表可以有几百个条目。 我希望能够搜索部分内容。什么时候? Content 如果是“这是一个测试句”,并且用户搜索“test”甚至“te”,则应显示该行。 是否可以将此信息存储在sqllite3数据库中,或者是否有更好的性能方法?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Pentium10    14 年前
    1. 数据库对于这些东西来说很好,只要确保使用索引,如果可以避免使用 LIKE 两边都打开

      错了,它确实 使用指标

      其中数据如“%search%”

      很好,它使用索引

      其中“search%”之类的数据

    2. 如果你有超过百万的记录,或者长文本。您可以将时间按类别划分,并将它们存储在不同的表中。这样,您将告诉用户只在该类别中搜索。

    3. 确保您实现了正确的文本更改事件+键计时器,因为您可能会很快发出数据库搜索请求,而用户尚未完成键入。

    在移动/桌面环境中,建议等待300ms,等待下一次按键。

    解释一下我的意思:假设你想为“蓝光”搜索searc

    • 用户在“b”中键入文本更改,请求搜索时使用“b%”
    • 当文本更改触发时,用户在“l”中键入,请求搜索时使用“bl%”
    • 用户在“u”中键入文本更改时激发,请求搜索时使用“blu%”

    您最终将执行效率低下的查询,这需要很长的时间

    你应该这样做:

    • 用户键入“B”,您应该等待300毫秒,等待下一个键
    • 用户在“L”中键入,您应该等待300毫秒,等待下一个键
    • 用户输入“u”,文本长度达到3,允许搜索
        2
  •  0
  •   Cristian    14 年前

    是的,可以在sqlite3上存储信息。SQL将类似于:

    SELECT * FROM table_name WHERE Content LIKE '%test%'