标签: text-search

Google如何"你的意思是?" 算法工作?

我一直在开发一个投资组合管理工具的内部网站.有很多文本数据,公司名称等.我对一些搜索引擎能够快速回复查询的印象非常深刻,"你的意思是:xxxx".

我需要能够智能地进行用户查询并不仅响应原始搜索结果,还要回答"你的意思是?" 当有极有可能的替代答案等时作出回应

[我正在开发ASP.NET(VB - 不要反对我!)]

更新:好的,如果没有数百万"无偿用户",我怎么能模仿这个?

  • 为每个"已知"或"正确"术语生成拼写错误并执行查找?
  • 其他一些更优雅的方法?

algorithm nlp spell-checking machine-learning text-search

426
推荐指数
7
解决办法
8万
查看次数

在几十个JAR文件中找到一个类?

你如何在很多jar文件中找到特定的类名?

(寻找实际的类名,而不是引用它的类.)

java jar class project-structure text-search

237
推荐指数
9
解决办法
20万
查看次数

如何用pymongo创建索引

我想在Mongo DB中的特定字段启用文本搜索.我想在python( - > pymongo)中实现这个搜索.当我按照互联网上的说明操作时:

db.foo.ensure_index(('field_i_want_to_index', 'text'), name="search_index")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

    Traceback (most recent call last):
    File "CVE_search.py", line 8, in <module>
    db.foo.ensure_index(('field_i_want_to_index', 'text'), name="search_index")
 File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 1599, in ensure_index
        return self.create_index(key_or_list, cache_for, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 1466, in create_index
        index_doc = helpers._index_document(keys)
      File "/usr/local/lib/python2.7/dist-packages/pymongo/helpers.py", line 100, in _index_document
            for (key, value) in index_list:
    ValueError: too many values to unpack
Run Code Online (Sandbox Code Playgroud)

在pymongo中创建索引有不同/更好的方法吗?

indexing fuzzy-search text-search mongodb pymongo

19
推荐指数
1
解决办法
2万
查看次数

如何列出当前git托管代码库中的所有TODO消息

我想看到所有TODO评论,只有我写的并且存在于当前代码库中,这是git托管的.

到目前为止我所做的是打印我在完整的git历史记录中创建或修改的所有TODO注释:git log -p --author="My name" -S TODO | grep "\+.*TODO"

但是这个工具链列出了所有写过的TODO评论,甚至是那些我已经解决并因此从代码中再次删除的评论.

有没有一个工具可以逐行搜索当前的代码库,检查它是否包含"TODO",如果这行是由我创作然后打印这些行?

git text-search todo git-commit

17
推荐指数
3
解决办法
4416
查看次数

如何使用Google Chrome搜索网页的源文件(包括所有javascript文件)中的文本

如何使用谷歌浏览器搜索网页的源文件(包括所有javascript文件)中的文本?

如果存在Chrome插件,或者告诉我如何列出网页包含的所有javascript文件.

谷歌浏览器有一个开发工具,可用于查看源文件并在我指出的特定文件中搜索,但如果网页包含,文件?要快速搜索,请制作插件!

javascript plugins google-chrome text-search

16
推荐指数
0
解决办法
2006
查看次数

用部分字符串进行Mongoose文本搜索

嗨,我正在使用猫鼬来搜索我的收藏中的人物.

/*Person model*/
{
    name: {
       first: String,
       last: String
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想搜索有查询的人:

let regex = new RegExp(QUERY,'i');

Person.find({
   $or: [
      {'name.first': regex},
      {'name.last': regex}
   ]
}).exec(function(err,persons){
  console.log(persons);
});
Run Code Online (Sandbox Code Playgroud)

如果我搜索约翰,我会得到结果(如果我搜索Jo,则为事件).但如果我搜索John Doe,我显然没有得到任何结果.

如果我将QUERY更改为John | Doe,我会得到结果,但它会返回所有在姓氏或名字中都有JohnDoe的人.

接下来就是尝试使用mongoose textsearch:

首先将字段添加到索引:

PersonSchema.index({
   name: {
      first: 'text',
      last: 'text'
   }
},{
   name: 'Personsearch index',
   weights: {
      name: {
          first : 10,
          last: 10
   }
}
});
Run Code Online (Sandbox Code Playgroud)

然后修改Person查询:

Person.find({ 
    $text …
Run Code Online (Sandbox Code Playgroud)

text-search mongoose mongodb node.js

13
推荐指数
2
解决办法
1万
查看次数

如何针对倒排索引和关系数据库优化"文本搜索"?

更新2015-10-15

早在2012年,我正在构建个人在线应用程序,并且实际上想要重新发明轮子,因为我天生好奇,出于学习目的并提高我的算法和架构技能.我可以使用apache lucene和其他人,但正如我所提到的,我决定建立自己的迷你搜索引擎.

问:除了使用elasticsearch,lucene等可用服务之外,真的没有办法增强这种架构吗?


原始问题

我正在开发一个Web应用程序,用户在其中搜索特定的标题(例如:book x,book y等),这些数据位于关系数据库(MySQL)中.

我遵循的原则是,从db中获取的每条记录都缓存在内存中,以便应用程序对数据库的调用较少.

我开发了自己的迷你搜索引擎,具有以下架构:
架构图
这是它的工作原理:

  • a)用户搜索记录名称
  • b)系统检查查询开始的字符,检查是否在那里查询:获取记录.如果没有,请添加它并使用两种方式从数据库中获取所有匹配的记录:
    • 在表"查询"(这是一种历史表)中已经存在查询,从而根据ID获得记录(快速性能)
    • 或者,否则使用Mysql LIKE %%语句来获取记录/ ids(同时在历史表查询中保留用户使用的查询以及它映射到的ids).
      - >然后它将记录及其ID添加到 缓存中,并且只将id添加到反向索引映射中.
  • c)将结果返回给UI

系统工作正常,但我有两个主要问题,我找不到一个好的解决方案(过去一个月一直在尝试):

第一个问题:
如果你检查点(B),情况没有查询"历史"被发现,它必须使用像%%声明:此过程变得时间当查询数据库(而不是一个或匹配许多纪录消耗二):

  • 从Mysql获取记录需要一些时间(这就是我在特定列上使用INDEXES的原因)
  • 然后是时间保存查询历史记录
  • 然后是时候将记录/ ID添加到缓存和反向索引映射

第二个问题:
应用程序允许用户添加自己的新记录,这些记录可以立即被登录到应用程序的其他用户使用.
然而,为了实现这一点,必须更新反向索引映射和表"查询",以便在任何旧查询与新单词匹配的情况下.例如,如果添加了记录"woodX",旧的查询"wood"仍会映射到它.所以为了重新勾选查询"wood"到这个新记录,这就是我现在正在做的事情:

  • 新记录"woodX"被添加到"记录"表中
  • 然后我运行一个Like %%语句来查看表"查询"中哪些已存在的查询映射到此记录(例如"wood"),然后将此查询与新记录ID一起添加为新行:[wood,new ID].
  • 然后在内存中,通过将新记录ID添加到此列表来更新反向索引Map的"木"键值(即列表)

- >现在,如果远程用户搜索"wood",它将从内存中获取:wood和woodX

这里的问题也是时间消耗.将所有查询历史(在表查询中)与新添加的单词匹配需要花费大量时间(匹配查询越多,时间越多).然后内存更新也需要很多时间.

什么,我这样做来解决这个问题的时候,就是返回了预期的结果,用户第一,然后让应用程序发布一个AJAX所要求的数据呼叫,实现所有这些更新任务.但我不确定这是一种不良做法还是一种不专业的做事方式?
所以在过去的一个月(多一点)我试着想到这个架构的最佳优化/修改/更新,但我不是文档检索领域的专家(实际上它是我的第一个迷你搜索引擎).

我将非常感谢能够实现这种架构的任何反馈或指导.
提前致谢.

PS:

  • 它是一个使用servlet的j2ee应用程序.
  • 我正在使用MySQL innodb(因此我无法使用全文搜索选项)

architecture search-engine text-search inverted-index

12
推荐指数
1
解决办法
1276
查看次数

Javascript在字符串中找到单词的索引(不是单词的一部分)

我目前正在使用str.indexOf("word")字符串中查找单词.但问题在于它还会返回其他词语的部分内容.

例如:"我去了foobar并订购了foo." 我想要单词"foo"的第一个索引,而不是foobar中的foo.

我无法搜索"foo",因为有时它可能会跟随一个句号或逗号(任何非字母数字字符).

javascript regex search indexof text-search

10
推荐指数
2
解决办法
1万
查看次数

如何在JAVA中搜索阿拉伯语文本?

我在带有变音符号的数据库中有阿拉伯语文本.当我输入阿拉伯语搜索某些字符串时,它没有变音符号,它肯定与数据库字符串不匹配.它在没有变音符号的情况下正常工作.有没有办法在文本上运行它与变音符号???

java android arabic text-search

9
推荐指数
2
解决办法
1783
查看次数

在C#中超过100k +字符串的快速动态模糊搜索

假设它们是预加载的股票代码,键入文本框.我正在寻找可以复制的代码,而不是要安装的库.

这是受这个问题的启发:

是否有为C#编写的模糊搜索或字符串相似性函数库?

Levenstein距离算法似乎运行良好,但计算需要时间.当用户输入额外的字母时,是否需要重新运行查询这一事实是否有任何优化?我有兴趣最多显示每个输入的前10个匹配项.

c# algorithm fuzzy-search .net-4.0 text-search

8
推荐指数
1
解决办法
4007
查看次数