我们正在努力生成一个将分发给多个第三方的数据库.我们还将继续重新生成此数据库,重新分发它,并且这些第三方将需要使用新版本覆盖其现有数据库副本.
我正在尝试决定是否要临时分离数据库,制作.mdf的副本,然后发送该副本,或者我是否应该只对数据库进行完整备份,然后将.bak发送出去.
我可以看到的主要区别是,要分发.mdf,您必须临时分离数据库,以便您可以复制它.
每种格式的其他优点/缺点是什么?
分配一个在另一个上有安全隐患吗?
最初导入一种格式比另一种格式更容易吗?
谢谢.
默认情况下,Solr返回字段的构面,然后如果为该字段选择构面值,则不再返回所有其他先前的选项作为该字段的构面的一部分.
我正在尝试开发一个更像亚马逊搜索引擎(基于他们自己的A9搜索引擎,因此可能类似于Amazon CloudSearch)的搜索引擎.
当您缩小到亚马逊搜索的某些"方面"时,如果您要将该区域添加到搜索中,它们将继续显示其他选项以及计数.
在Solr中有没有内置的方法可以做到这一点?如果没有,我将如何滚动自己.显然我需要缓存为该字段返回的原始方面.但是,一旦我已经为该领域选择了一个(或多个)方面,那么计算其他方面区域的计数的最有效方法是什么.显然,当选择其他构面时,您在这些值之间进行"OR"查询,因为您尝试使用这两个值中的任何一个来显示事物.
例如,我在亚马逊的珠宝部门搜索钻石戒指,然后缩小到黄金作为金属类型.然后我可以选择多个克拉面:

有人可以举例说明我如何(有效地)使用Solr做到这一点吗?
对于未来版本的Solr,是否有任何功能可以提供开箱即用的功能(假设它不在盒子中)?
我正在 .NET 中开发一个类库,它使用 Amazon AWS SDK 通过 Amazon SNS 对通知进行排队,以及创建新的移动推送终端节点。您可以通过使用您创建的客户端对象发出请求来完成此操作,如下所示:
var client = new AmazonSimpleNotificationServiceClient(...);
Run Code Online (Sandbox Code Playgroud)
您可以在此处...以多种方式指定您的 AWS 凭证。
我不想client在每次排队通知或向 Amazon 发送其他操作时重新创建对象,而是只想创建该client对象的静态版本,并让我的每个方法都使用它。
我的类库中的这些方法可能在由多个线程调用的环境中运行,或者当我们在 ASP.NET 中使用它时,可能会同时从应用程序池中的多个 Web 连接调用。
AmazonSimpleNotificationServiceClient 及其方法是否被认为是线程安全的?有人认为我以这种方式使用静态对象的方式有问题吗?有没有更好的方法来做到这一点,同时保留每次与 SNS 交互时不必实例化新对象的效率?(最终我们预计使用其中一些方法会发送大量推送通知。)
我们最近在一个Perl脚本中遇到了一些奇怪的结果,其中NULL字符(Perl中的\ 0)被引入到某些文本中.我们最终将其跟踪到偶然用于Perl m //匹配运算符的// g运算符.直到发生这种情况,我甚至都不知道你可以使用// g和m //运算符,因为我只使用它与s ///运算符.
无论如何,即使我们通过删除错误// g来修复错误,我也很想知道为什么这个小脚本在文本中引入了一个NULL字符!:-)
my $text = "01";
if ($text =~ m/(\d+)/g)
{
$text = "A$1";
}
if ($text =~ m/\0/)
{
print "Text contains NULL!\n";
}
Run Code Online (Sandbox Code Playgroud)
阻止NULL出现的细微更改:如果我更改$ text的值(例如,更改为"0"或只是"1"或许多其他组合),则不再引入NULL.如果我将赋值值从"A $ 1"更改为"$ 1",则不再引入NULL.如果我将"A $ 1"分配给完全不同的变量,则不会将NULL引入该变量.如果我在m //匹配期间删除了// g运算符,则不会引入NULL.
Perl大师可以解释一下这种行为吗?我用谷歌搜索找不到任何东西.
我正在努力阅读和理解Solr 4中有关空间搜索的文档:
http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
但是我很难找到一个简单的答案:在Solr 4中按距离对结果进行排序的理想方法是什么?
我的文档集中有两个可用的位置字段:
geo是一个location_rpt定义为的字段:
<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
geo="true" distErrPct="0.025" maxDistErr="0.000009" units="degrees" />
Run Code Online (Sandbox Code Playgroud)
并且ll位置字段定义为:
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
Run Code Online (Sandbox Code Playgroud)
我在上面引用的文档中看到的示例引用了交叉圈和各种事情似乎没有必要,如果我有兴趣做的是在我的查询中提供一个起点(lat/lng),并得到一个按距离排序的结果列表.
更新:接受的答案提供了一个在Solr 3和4中有效的解决方案.David Smiley 对该答案的评论为那些感兴趣的人提供了严格的"Solr 4"排序方式.
我正在为网站构建聊天界面。首次加载时,会显示最新消息,最新消息位于底部,这在大多数聊天应用程序中都是常见的。
当用户向上滚动时,更多消息会通过我们的 API 加载,并插入到现有消息之上。
正如您所料,聊天气泡的样式位于具有设定高度的<div>容器内。<div>overflow-y: auto
目前我正在做的是注意顶部消息<div>,加载其上方的较旧消息,然后重新定位视图以尝试将用户带回几乎他们离开的位置,但这很棘手,特别是当聊天气泡包含动态加载时元素(嵌入图像等)。(在浏览器渲染这些气泡之前,我不知道它们的高度。)
在理想的情况下,我希望找到一种方法来插入上面的消息,而不会导致滚动位置完全移动,这样用户就不会忘记他们在消息流中的位置。
我从来没有听说过这样的事情,但如果有一种方法可以告诉 div 向上延伸,而不是让它进一步向下推现有的消息,那就太酷了。
任何意见,将不胜感激。
这是一个显示基本问题的 JSFiddle。它模拟我的聊天界面,在页面加载时加载 30 条聊天消息,然后将您置于消息列表的底部。当您滚动到顶部时,会加载另外 30 个,但您会发现这对用户体验来说很不舒服,因为您立即失去了自己的位置。
更新:感谢理查德的回答,采用了基于requestAnimationFrame重新对齐视口的技术。(对于我的使用,我使用了scrollTop可滚动 div 的 ,而不是window.scrollTo如他的示例中所示。)
我正在尝试检索本地 iOS 设备上的所有艺术家,以及对于每个艺术家,该艺术家可用的歌曲数量。
我目前正在以一种直接的方式执行此操作,通过查询所有艺术家和每个艺术家,计算其收藏中的项目(歌曲)数量:
MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query setGroupingType:MPMediaGroupingArtist];
NSArray *collections = [query collections];
for (MPMediaItemCollection *collection in collections)
{
MPMediaItem *representativeItem = [collection representativeItem];
int songs = [[collection items] count];
// do stuff here with the number of songs for this artist
}
Run Code Online (Sandbox Code Playgroud)
但是,这似乎效率不高,或者至少比我预期的要慢。
在有数百位艺术家的演示 iPhone 4 设备上,上述代码运行大约需要 7 秒。当我注释掉获取“收集项目”计数的行时,时间减少到 1 秒。
所以我想知道是否有比我上面做的更快的方法来检索艺术家的歌曲数?
2011 年 9 月 27 日更新。我发现我可以使用以下方法简化艺术家的歌曲计数检索:
int songs = [collection count];
Run Code Online (Sandbox Code Playgroud)
而不是我在做什么:
int songs = [[collection items] count];
Run Code Online (Sandbox Code Playgroud)
然而,实际上这对性能几乎没有影响。
我借了一个 iPhone 3G …
我在Solr中有一组文档,我搜索两个不同的requestHandler.一个requestHandler在内部使用,应该能够查看所有文档.另一个由面向公众的搜索引擎使用.
有没有办法在requestHandler定义中应用fq参数,以便不返回文档的子集?
在这种情况下,我只想返回"fivi"字段不是ZERO的文档.
我创建了一个Singleton-patterns类,其中包含一些填充非常昂贵的实例变量(Dictionaries).
此类用于.NET MVC 4项目.他们关键的是,这个Singleton类中的字典提供的数据很不错,但Web应用程序不需要运行.
换句话说,当我们处理一个Web请求时,如果它们可用,那么该请求将使用词典中的信息进行增强,但如果它不可用,那就没问题了.
所以我想要做的是找到在Singleton中将数据加载到这些词典中的最佳方法,而不会阻止Web活动,因为它们充满了数据.
我通常会找到一种方法来实现多线程,但过去我在ASP.NET中使用多线程技术阅读并遇到了问题.在.NET 4/MVC 4中有变化吗?我该怎么做呢?
UPDATE
根据下面的反馈和更多的研究,我现在正在做的是下面,它似乎工作正常.有没有人看到任何潜在的问题?在我的测试中,无论我多少次调用LazySingleton.Instance,构造函数只会被调用一次,并立即返回.我可以立即访问LazySingleton.EXPENSIVE_CACHE,虽然它可能不包含我正在寻找的值(我在我的应用程序中使用.Contains()调用测试).所以它似乎正在发挥作用......
如果我只是从单个线程(LazySingleton构造函数)编辑EXPENSIVE_CACHE字典,在我的Web应用程序中读取它时是否需要担心线程安全?
public class LazySingleton
{
public ConcurrentDictionary<string, string> EXPENSIVE_CACHE = new ConcurrentDictionary<string, string>(1, 80000); // writing to cache in only one thread
private static readonly Lazy<LazySingleton> instance = new Lazy<LazySingleton>(() => new LazySingleton());
private LazySingleton()
{
Task.Factory.StartNew(() => expensiveLoad());
}
public static LazySingleton Instance
{
get
{
return instance.Value;
}
}
private void expensiveLoad()
{
// load data into EXPENSIVE_CACHE
}
}
Run Code Online (Sandbox Code Playgroud) 我在jetty-6.1-SNAPSHOT下使用Solr 3.5.0和示例服务器.我已经开始使用默认的schema.xml,删除了默认<field>定义,并指定了我自己的定义,包括:
<field name="content" type="text_general" indexed="false" stored="false" required="true" />**
<field name="title" type="text_general" indexed="false" stored="true" required="true" />
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
Run Code Online (Sandbox Code Playgroud)
我已经为该content字段索引设置为false ,因为我试图稍后在模式中的copyField定义中使用此字段.我已将set存储为false,因为我不需要content在查询结果中看到此字段.
稍后在架构中,我定义了以下copyField:
<copyField source="title" dest="text"/>
<copyField source="content" dest="text"/>
Run Code Online (Sandbox Code Playgroud)
这是我的数据样本:
<add>
<doc>
<field name="id">2-29-56</field>
<field name="title">This is a test</field>
<field name="content">This is some content</field>
</doc>
</add>
Run Code Online (Sandbox Code Playgroud)
我使用以下模式运行示例Solr服务器:
C:\solr\example>java -jar start.jar
Run Code Online (Sandbox Code Playgroud)
然后我尝试将此示例文档发送到我的Solr服务器:
C:\solr\example\exampledocs>java -jar post.jar test.xml
Run Code Online (Sandbox Code Playgroud)
这就是我得到的回报:
SimplePostTool: version 1.4
SimplePostTool: POSTing files to http://localhost:8983/solr/update..
SimplePostTool: POSTing file test.xml
SimplePostTool: FATAL: Solr returned …Run Code Online (Sandbox Code Playgroud) 我正在运行此版本的Java:
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我正在具有7.5GB内存的m1.large实例中的Amazon EC2的Windows 2008 R2 64位服务器上运行此服务器。
启动Java应用程序时,我使用以下命令行:
java -Xms6G -Xmx6G -server -jar start.jar
Run Code Online (Sandbox Code Playgroud)
我的意图是让Java为其堆保留6GB,以便当我的应用程序运行时,它将能够将其整个数据集加载到内存中。
但是,当我启动该应用程序时,我仅看到任务管理器中使用了1.3GB的内存?
solr ×4
.net ×2
aws-sdk ×1
c# ×1
css ×1
geolocation ×1
ios ×1
java ×1
javascript ×1
jvm ×1
lazy-loading ×1
mpmediaitem ×1
perl ×1
regex ×1
search ×1
side-effects ×1
singleton ×1
solr4 ×1
sql-server ×1