在搜索文本中匹配的单词时,我可以优化核心数据查询吗?(这个问题也适用于iPhone上自定义SQL与核心数据的智慧.)
我正在研究一种新的(iPhone)应用程序,它是一个科学数据库的手持式参考工具.主界面是一个标准的可搜索表视图,我想要用户键入新单词时的类型响应.单词匹配必须是文本中单词的前缀.该文本由100,000个单词组成.
在我的原型中,我直接编写了SQL.我创建了一个单独的"单词"表,其中包含主实体文本字段中的每个单词.我索引了单词并按照行进行了搜索
SELECT id, * FROM textTable
JOIN (SELECT DISTINCT textTableId FROM words
WHERE word BETWEEN 'foo' AND 'fooz' )
ON id=textTableId
LIMIT 50
Run Code Online (Sandbox Code Playgroud)
这运行得非常快.使用IN可能也会起作用,即
SELECT * FROM textTable
WHERE id IN (SELECT textTableId FROM words
WHERE word BETWEEN 'foo' AND 'fooz' )
LIMIT 50
Run Code Online (Sandbox Code Playgroud)
LIMIT至关重要,可以让我快速显示结果.如果达到限制,我会通知用户显示的内容太多.这是kludgy.
我花了最近几天考虑转移到Core Data的优势,但我担心架构中缺乏控制,索引和查询重要查询.
从理论上讲,NSPredicate textField MATCHES '.*\bfoo.*'会起作用,但我相信它会很慢.这种文本搜索似乎很常见,我想知道通常的攻击是什么?你会像我上面那样创建一个单词实体并使用"bEGINSWITH'foo'这个词的谓词吗?这会像我的原型一样快吗?Core Data会自动创建正确的索引吗?我找不到任何明确的方法来建议持久性存储有关索引.
我在iPhone应用程序中看到了Core Data的一些优点.故障和其他内存注意事项允许对tableview查询进行有效的数据库检索,而无需设置任意限制.对象图管理允许我轻松遍历实体而无需编写大量SQL.移植功能将来会很好.另一方面,在有限的资源环境(iPhone)中,我担心自动生成的数据库会因元数据,不必要的反向关系,低效的属性数据类型等而膨胀.
我应该潜入或谨慎行事吗?
我正在与另外两个开发人员合作开展一个项目.问题是1个开发人员正在使用SVN,而另一个开发人员正在使用github.有没有办法让SVN和git双方同步?
我需要在类库上设置事件并在表单中捕获它们.
例如,我在DLL文件中运行一个sub ,我需要"接收"该类中的sub正在运行的事件.
DLL文件是由我在Visual Basic中创建的,但是如何在其上引发事件以便在表单中捕获?
请举个例子.
即使我使用过Clojure,我还没有详细查看范围规则.当我阅读文档时,我变得更加困惑.我做了一个小测试来尝试确定范围,并对复杂性感到沮丧.有人可以解释Clojure使用的意图和各种规则吗?
(def x 1)
(defn dummy-fn2[]
(+ x 1))
(defn dummy-fn[]
(println "entering function: " x)
(let [x 100]
(println "after let: " x)
(let [x (dummy-fn2)]
(println "after let and dummy2: " x)
(binding [x 100]
(println "after binding: " x)
(let [x (dummy-fn2)]
(println "after binding and dummy2: " x))))))
1:2 foo=> (dummy-fn)
entering function: 1
after let: 100
after let and dummy2: 2
after binding: 2
after binding and dummy2: 101
nil
Run Code Online (Sandbox Code Playgroud) 我有一组Web托管图像,我需要我的用户能够从每个图像中选择1.我认为列表框可以用于此,但我无法弄清楚添加一个图像.这可能吗?更好的方法吗?我正在使用最新的免费vb.
作为我之前的好奇心问题的衍生物,我有一个后续的好奇心.是否有6502,VIC和SID芯片的未来和/或应用?我知道它们仍然是生产和使用的.例如,我记得6502是小型家电的理想控制器芯片.SID肯定仍然出现在一些"复古"声音合成器中,虽然我的猜测是它只是模仿.那个VIC怎么样?
社区维基问题,因为没有正确的答案.
我试图将zip文件下载到本地驱动器并将所有文件解压缩到目标文件夹.
所以我提出了解决方案,但它只是将文件从目录"下载"到另一个目录,但它不适用于下载文件.对于提取,我能够让它在2.6中工作但不能用于2.5.所以对工作的任何建议或我绝对愿意接受的另一种方法.提前致谢.
######################################
'''this part works but it is not good for URl links'''
import shutil
sourceFile = r"C:\Users\blueman\master\test2.5.zip"
destDir = r"C:\Users\blueman\user"
shutil.copy(sourceFile, destDir)
print "file copied"
######################################################
'''extract works but not good for version 2.5'''
import zipfile
GLBzipFilePath =r'C:\Users\blueman\user\test2.5.zip'
GLBextractDir =r'C:\Users\blueman\user'
def extract(zipFilePath, extractDir):
zip = zipfile(zipFilePath)
zip.extractall(path=extractDir)
print "it works"
extract(GLBzipFilePath,GLBextractDir)
######################################################
Run Code Online (Sandbox Code Playgroud) 我正在尝试在基于Java的Google App Engine代码中发布Atom/RSS提要.我已经尝试使用罗马并继续得到以下错误(尝试谷歌搜索没有成功),我运行的代码生成错误是演示代码(所以我感觉罗马不适用于GAE)
java.lang.NoClassDefFoundError: org/jdom/JDOMException
at com.sun.syndication.io.SyndFeedOutput.<init>(SyndFeedOutput.java:44)
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一个简单的Java库的建议,以便从Google App Engine中创建和发布Atom提要.
谢谢.
我最近一直在考虑我的数据库索引,过去我只是非常挑衅地把它们作为事后的想法投入,并且如果它们是正确的甚至是帮助的话,从来没有真正考虑过.我读过相互矛盾的信息,有人说更多的索引更好,而其他索引也不好,所以我希望得到一些澄清,并在这里学到一点.
假设我有这个假设的表格:
CREATE TABLE widgets (
widget_id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
widget_name VARCHAR(50) NOT NULL,
widget_part_number VARCHAR(20) NOT NULL,
widget_price FLOAT NOT NULL,
widget_description TEXT NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
我通常会为将要连接的字段和最常排序的字段添加索引:
ALTER TABLE widgets ADD INDEX widget_name_index(widget_name);
Run Code Online (Sandbox Code Playgroud)
现在,在一个查询中,例如:
SELECT w.* FROM widgets AS w ORDER BY w.widget_name ASC
Run Code Online (Sandbox Code Playgroud)
本widget_name_index是用来排序的结果集.
现在,如果我添加搜索参数:
SELECT w.* FROM widgets AS w
WHERE w.widget_price > 100.00
ORDER BY w.widget_name ASC
Run Code Online (Sandbox Code Playgroud)
我想我需要一个新的索引.
ALTER TABLE widgets ADD INDEX widget_price_index(widget_price);
Run Code Online (Sandbox Code Playgroud)
但是,它会使用两个索引吗?据我了解,它不会......
ALTER TABLE widgets ADD INDEX …Run Code Online (Sandbox Code Playgroud)