因此,我想使用全文搜索实现更好的搜索功能,但它的表现不如预期。它不会返回任何结果,或者我认为不相关的结果。
首先我检查了:
show variables like 'ft_min%'
...返回 4
所以我有一个充满游戏名称的数据库。搜索的一个很好的例子是“刺客信条”。在数据库中,它们实际上存储为“刺客信条”(注意撇号)。因此,如果我执行以下查询:
SELECT g_name, MATCH(g_name) AGAINST ('assassins creed') AS score FROM tgmp_games WHERE MATCH(g_name) AGAINST ('assassins creed') LIMIT 15
返回结果很好(下面有一些)
...但是对于搜索脚本,它使用 JqueryUI 自动完成下拉菜单,当提交查询字符少于整个单词的任何内容时,它返回空
SELECT g_name, MATCH(g_name) AGAINST ('assass') AS score FROM tgmp_games WHERE MATCH(g_name) AGAINST ('assass') LIMIT 15
我还读到如果数据库中的行数太少会产生影响,但那里有 25k 行所以应该没问题。我做错了什么?
我可以得到结果的输出,但更感兴趣的是如何让零件搜索词返回一些结果。
Array
(
[g_name] => Assassins Creed III
[score] => 15.406005859375
)
Array
(
[g_name] => The Witcher 2: Assassins of Kings
[score] => 8.46316719055176
)
Array
(
[g_name] => Tenchu: Shadow Assassins
[score] => 8.46316719055176
)
Array
(
[g_name] => The Witcher 2: Assassins of Kings - Enhanced Edition
[score] => 8.27909851074219
)
Array
(
[g_name] => Assassin\'s Creed
[score] => 6.84770059585571
)
Array
(
[g_name] => Assassin\'s Creed III
[score] => 6.84770059585571
)
Array
(
[g_name] => Assassin's Creed II
[score] => 6.84770059585571
)
Array
(
[g_name] => Assassin's Creed: Revelations ...
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin\'s Creed: Revelations
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin's Creed: Brotherhood
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin's Creed: Bloodlines
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin's Creed II: Discovery
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin\'s Creed III: Liberation
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin's Creed: Altair's Chronicles
[score] => 6.69712924957275
)
Array
(
[g_name] => Assassin's Creed II: Bonfire of the Vanities
[score] => 6.69712924957275
)
这个顺序也很奇怪,因为“巫师 2”排在其他“刺客信条”游戏之上。不确定是否可以使用某种模式来避免卡在标点符号上?
最佳答案
查看 bool 搜索的 MySQL 文档。 http://dev.mysql.com/doc/refman/5.5/en//fulltext-boolean.html .您可能想要使用的是 * 运算符(类似于 % 通配符)。
MATCH(g_name) AGAINST( bool 模式下的'assass*')
表中的行数受到影响,因为 MySQL 适用于全文索引的 50% 规则。如果一个词出现在表中超过 50% 的行中,则 MySQL 会认为它太常见而无法提供任何值来缩小结果范围,并且会忽略它。这通常用于消除诸如“the”之类的词。
关于mysql全文搜索没有返回预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13196290/
我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/
为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
所以我开始关注ruby,很多东西看起来不错,但我对隐式return语句很反感。我理解默认情况下让所有内容返回self或nil但不是语句的最后一个值。对我来说,它看起来非常脆弱(尤其是)如果你正在使用一个不打算返回某些东西的方法(尤其是一个改变状态/破坏性方法的函数!),其他人可能最终依赖于一个返回对方法的目的并不重要,并且有很大的改变机会。隐式返回有什么意义?有没有办法让事情变得更简单?总是有返回以防止隐含返回被认为是好的做法吗?我是不是太担心这个了?附言当人们想要从方法中返回特定的东西时,他们是否经常使用隐式返回,这不是让你组中的其他人更容易破坏彼此的代码吗?当然,记录一切并给出
大家好!我想知道Ruby中未使用语法ClassName.method_name调用的方法是如何工作的。我头脑中的一些是puts、print、gets、chomp。可以在不使用点运算符的情况下调用这些方法。为什么是这样?他们来自哪里?我怎样才能看到这些方法的完整列表? 最佳答案 Kernel中的所有方法都可用于Object类的所有对象或从Object派生的任何类。您可以使用Kernel.instance_methods列出它们。 关于没有类的Ruby方法?,我们在StackOverflow
我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r