Tag: search

全文search与重量在mongoose

据我所知,从3.8.9版本开始,mongoose支持全文search。 但我找不到一个好的文档! 我想做一些事情: db.collection.ensureIndex( // Fields to index { animal: "text", color: "text", pattern: "text", size: "text" }, // Options { name: "best_match_index", // Adjust field weights (default is 1) weights: { animal: 5, // Most relevant search field size: 4 // Also relevant } } ) 我可以用纯mongoose做到吗? 或者我必须使用一些像mongoose-text-search的插件? 如果没有重量? 我该怎么做?

使用ajax和按键优化search

我有以下代码,因为我想要search数据库,因为用户正在input文本框。 下面的代码工作正常,但似乎有点低效,因为如果用户input速度非常快,我可能会做更多的search,而不是必要的。 所以如果用户input“航行” 我正在寻找“帆”,“赛丽”,“赛琳”和“帆船” 我想看看是否有办法检测按键之间的任何特定时间,所以只有search用户停止键入500毫秒或类似的东西。 有没有像这样的最佳做法? $('#searchString').keypress(function(e) { if (e.keyCode == 13) { var url = '/Tracker/Search/' + $("#searchString").val(); $.get(url, function(data) { $('div#results').html(data); $('#results').show(); }); } else { var existingString = $("#searchString").val(); if (existingString.length > 2) { var url = '/Tracker/Search/' + existingString; $.get(url, function(data) { $('div#results').html(data); $('#results').show(); }); } }

如果针是一个arrays,我怎样才能使用in_array?

我有2个数组,值将从数据库加载,下面是一个例子: $arr1 = array(1,2,3); $arr2 = array(1,2,3,4,5,6,7); 我想要做的是检查$arr1 所有值是否存在于$arr2 。 上面的例子应该是TRUE而: $arr3 = array(1,2,4,5,6,7); 比较$arr1和$arr3会返回一个FALSE 。 通常我使用in_array因为我只需要检查单个值到数组中。 但在这种情况下, in_array不能使用。 我想看看是否有一个简单的方法来检查最小循环。 更新澄清。 第一个数组将是一个包含唯一值的集合。 第二个数组可以包含重复的值。 在处理之前,它们都是一个数组。

在Python中,如何检查一个string是否只包含某些字符?

在Python中,如何检查一个string是否只包含某些字符? 我需要检查一个只包含a..z,0..9和。 (时期),没有其他人物。 我可以遍历每个字符,并检查字符是a..z或0..9,或。 但那会很慢。 我现在还不清楚如何用正则expression式来做到这一点。 它是否正确? 你可以build议一个更简单的正则expression式或更有效的方法。 #Valid chars . az 0-9 def check(test_str): import re #http://docs.python.org/library/re.html #re.search returns None if no position in the string matches the pattern #pattern to search for any character other then . az 0-9 pattern = r'[^\.a-z0-9]' if re.search(pattern, test_str): #Character other then . az 0-9 was found […]

ElasticSearch – 高索引吞吐量

我正在对ElasticSearch进行基准testing,以获得非常高的索引吞吐量。 我目前的目标是能够在数小时内索引30亿(30亿)文件。 为此,我目前有3个Windows服务器机器,每个16GB RAM和8个处理器。 被插入的文档有一个非常简单的映射,只包含一些数字非分析字段( _all被禁用)。 我能够使用这个相对适中的钻机,每秒钟可以达到大约12万个索引请求(使用大桌面进行监控),我相信吞吐量可以进一步提高。 我正在使用多个.net NEST客户端发送索引批量请求,批量使用1500个索引操作。 不幸的是,每秒钟12万个请求的吞吐量不会持续很长时间,速率会逐渐下降,几个小时后就会下降到15K左右。 监测机器显示,CPU不是瓶颈。 但是,物理磁盘(不是SSD)的空闲时间似乎在所有机器上都下降,平均闲置时间低于15%。 设置refresh_interval为60s,而不是300s,最后15m,似乎没有多大帮助。 在单个分片中窥探单个超时日志,显示超时logging每隔30分钟刷新一次,然后达到200MB。 我曾尝试使用两个分片策略: 1个指数,有60个碎片(没有副本)。 3个指数,每个20个分片(没有副本)。 这两种尝试导致相当相似的经验,我认为是有道理的,因为它是相同数量的碎片。 从细分市场看,大多数细分市场都有约30个细分市场,同样也有相似数量的可search细分市场。 分段大小各不相同。 有一次,max_num_segments = 1优化索引的尝试在完成之后似乎有一点帮助(需要很长时间)。 在任何时候,从一开始就启动整个摄取过程,在删除使用过的索引并创build新的索引之后,导致相同的行为。 起初高指数的吞吐量,但逐渐减less,很久之前,达到30亿文件的目标。 当时的索引大小约为120GB。 我正在使用ElasticSearch 1.4版本。 Xms和Xmxconfiguration为8192MB,可用内存的50%。 索引缓冲区设置为30%。 我的问题如下: 假设磁盘目前是这台钻机的瓶颈,这种磁盘利用率逐渐增加的现象是否正常呢? 如果没有,可以做些什么来否定这些影响? 有没有任何微调,我可以做,以提高索引吞吐量? 我是不是该? 还是应该扩大规模?

像'%Query%'和全文searchCONTAINS查询的性能

我有一个情况,我想search一个单词 。 对于这种情况,从性能angular度来看哪个查询是好的? Select Col1, Col2 from Table Where Col1 Like '%Search%' 要么 Select Col1, Col2 from Table Where Col1 CONTAINS(Col1,'Search') ?

在LINQ to SQL中使用contains()

我试图在一个使用linq-to-sql的应用程序中实现一个非常基本的关键字search。 我的search条件是在一个string数组中,每个数组项是一个单词,我想查找包含search条件的行。 我不介意,如果他们不仅仅包含search条件(很可能,他们会),但所有的search条件必须存在。 理想情况下,我想要类似下面的代码片段,但我知道这是行不通的。 另外,我在这里看到了这个问题 ,但是这个问题的作者似乎满足于做相反的事情( query.Contains(part.partName) ),这对我不起作用。 public IQueryable<Part> SearchForParts(string[] query) { return from part in db.Parts where part.partName.Contains(query) select part; } 我怎样才能重写这个查询,以便它能做我需要的?

直到但不包括正则expression式

对于正则expression式search的语法是什么,但不包括? 有点像: Haystack: The quick red fox jumped over the lazy brown dog Expression: .*?quick -> and then everything until it hits the letter "z" but do not include z

从Visual Studiosearch中排除特定的文件

是否有可能从Visual Studio中search排除某些文件。 例如jquery.js几乎总是污染我的search结果,来自该文件的一半结果。 我知道你可以白名单特定的types,但是当我想在.js扩展search有解决scheme吗?

查找大于目标的sorting数组中的第一个元素

在一般的二分search中,我们正在寻找出现在数组中的值。 然而有时候,我们需要find第一个大于或小于目标的元素。 这是我的丑陋,不完整的解决scheme: // Assume all elements are positive, ie, greater than zero int bs (int[] a, int t) { int s = 0, e = a.length; int firstlarge = 1 << 30; int firstlargeindex = -1; while (s < e) { int m = (s + e) / 2; if (a[m] > t) { […]