【问题标题】:Sqlite query to get search word with adjacent words tooSqlite查询也可以获取具有相邻单词的搜索词
【发布时间】:2015-06-08 13:15:01
【问题描述】:

我想使用 SQLite 中的查询返回搜索到的词,包括出现在搜索词之前和之后的相邻词。是否有可能做到这一点?还是我应该尝试其他方式?

例如对于下面的句子(使用数据库表中的描述列,列名是DESC):

> select DESC from TABLE_NAME where DESC like 'popular';

哪个会返回:

One of the most popular methods

但是,我也想返回两个相邻的词“大多数”和“方法”,像这样:

most popular methods

我尝试使用 REGEXP 进行检查,但以下内容不起作用:

@"SELECT Desc FROM tablename WHERE LineText REGEXP '(^| )popular( |$)'"

@"SELECT LineText FROM table1 WHERE LineText REGEXP '[[:<:]popular[[:>:]'"

我可以得到那些带有查询或其他正则表达式的吗?

【问题讨论】:

  • 这是什么意思:“我想要两个相邻的词也“大多数”和“方法”。从上面的文字。”?另外,您使用的是 MySQL 还是 SQLite?
  • 在MySQL中,你可以试试@"SELECT Desc FROM tablename WHERE LineText REGEXP '[[:&lt;:]]popular[[:&gt;:]]'"。另外,您可以查看@"SELECT Desc FROM tablename WHERE LineText LIKE '%popular%'"
  • @stribizhev,是的,我之前也检查过这个,但它返回 nil NSRegularExpression.. 所以语法方面可能有什么问题吗?不确定
  • @GordonLinoff 这是上述问题“最流行的方法之一”中的示例文本。当用户搜索“流行”词时,我也想要“大多数”和“方法”词。这两个词都出现在上面的句子中。
  • 在 SQLite3 中,您可以尝试像这样使用 REGEXP:@"SELECT Desc FROM tablename WHERE LineText REGEXP '\\bpopular\\b'"。它对你有用吗?

标签: ios mysql regex sqlite boolean-search


【解决方案1】:

我认为您的处理方式不正确。您应该能够使用 LIKE 语句获取返回的字符串,然后使用返回的字符串使用模板系统或输出流解析出单词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多