直接在mysql查询可以吗? 示例:
以 bool 模式搜索+possible +know
“我想知道这怎么可能”=> 2 场比赛
“一切皆有可能”=> 1 场比赛
最佳答案
我有一个奇怪的建议
您可能需要使用名为 myisam_ftdump 的 mysql 实用程序
这是我原始答案中样本的全文转储
C:\MySQL_5.5.12\data\sandro>myisam_ftdump -vc txtdata 1
2 0.4054651 everyhing
2 0.4054651 impossible
1 1.3862944 knew
3 -0.4054651 know
2 0.4054651 nothing
1 1.3862944 people
2 0.4054651 possible
1 1.3862944 probable
1 1.3862944 something
如果您可以将其生成为文本文件,则可以让 PHP 解析它以查找您要查找的词。
有或没有 BOOLEAN MODE,答案是否定的。
但是,您可以显示基于单词出现次数和整个字符串长度的排名,如下所示:
样本数据
DROP DATABASE sandro;
CREATE DATABASE sandro;
use sandro
CREATE TABLE txtdata
(
id int not null auto_increment,
txt VARCHAR(255),
primary key (id),
FULLTEXT (txt)
) ENGINE=MyISAM;
INSERT INTO txtdata (txt) VALUES
('I know Nothing is possible'),
('We know nothing is impossible'),
('I knew everyhing is possible'),
('We know everyhing is possible'),
('For may people something is probable');
这里是各种搜索排名的结果
mysql> SELECT *,MATCH(txt) AGAINST ('possible knew') as score FROM txtdata;
+----+--------------------------------------+--------------------+
| id | txt | score |
+----+--------------------------------------+--------------------+
| 1 | I know Nothing is possible | 0.3919430673122406 |
| 2 | We know nothing is impossible | 0 |
| 3 | I knew everyhing is possible | 1.73200523853302 |
| 4 | We know everyhing is impossible | 0 |
| 5 | For may people something is probable | 0 |
+----+--------------------------------------+--------------------+
5 rows in set (0.00 sec)
mysql> SELECT *,MATCH(txt) AGAINST ('possible know') as score FROM txtdata;
+----+--------------------------------------+--------------------+
| id | txt | score |
+----+--------------------------------------+--------------------+
| 1 | I know Nothing is possible | 0.3919430673122406 |
| 2 | We know nothing is impossible | 0 |
| 3 | I knew everyhing is possible | 0.3919430673122406 |
| 4 | We know everyhing is impossible | 0 |
| 5 | For may people something is probable | 0 |
+----+--------------------------------------+--------------------+
5 rows in set (0.00 sec)
mysql> SELECT *,MATCH(txt) AGAINST ('impossible knew') as score FROM txtdata;
+----+--------------------------------------+--------------------+
| id | txt | score |
+----+--------------------------------------+--------------------+
| 1 | I know Nothing is possible | 0 |
| 2 | We know nothing is impossible | 0.3919430673122406 |
| 3 | I knew everyhing is possible | 1.340062141418457 |
| 4 | We know everyhing is impossible | 0.3919430673122406 |
| 5 | For may people something is probable | 0 |
+----+--------------------------------------+--------------------+
5 rows in set (0.00 sec)
mysql> SELECT *,MATCH(txt) AGAINST ('impossible know') as score FROM txtdata;
+----+--------------------------------------+--------------------+
| id | txt | score |
+----+--------------------------------------+--------------------+
| 1 | I know Nothing is possible | 0 |
| 2 | We know nothing is impossible | 0.3919430673122406 |
| 3 | I knew everyhing is possible | 0 |
| 4 | We know everyhing is impossible | 0.3919430673122406 |
| 5 | For may people something is probable | 0 |
+----+--------------------------------------+--------------------+
5 rows in set (0.00 sec)
mysql>
关于mysql - 是否可以计算每行与 MATCH AGAINST 匹配的单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046628/
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html
在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg
如何匹配未被反斜杠转义的平衡定界符对(其本身未被反斜杠转义)(无需考虑嵌套)?例如对于反引号,我试过了,但是转义的反引号没有像转义那样工作。regex=/(?!$1:"how\\"#expected"how\\`are"上面的正则表达式不考虑由反斜杠转义并位于反引号前面的反斜杠,但我愿意考虑。StackOverflow如何做到这一点?这样做的目的并不复杂。我有文档文本,其中包括内联代码的反引号,就像StackOverflow一样,我想在HTML文件中显示它,内联代码用一些spanMaterial装饰。不会有嵌套,但转义反引号或转义反斜杠可能出现在任何地方。
这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了