我想知道DisMax和EDisMax有什么区别..?是否有任何有用的参考资料来了解这一点.另外,我想知道DisMax无法生成EDisMax能够产生结果的结果的查询是什么?
EDisMax有一些Query参数,如boost参数,ps参数,pf2参数; 但除了这个查询参数外,EDisMax如何比DisMax更好 ; 如何在这两者之间处理查询.什么因素使EDisMax比DisMax做得更好 ..
有些查询未能在DisMax中给出结果,但EDisMax为这些查询提供了结果.
我用Google搜索了DisMax和EDisMax之间的区别.我发现,EDisMax中使用的参数只是DisMax和EDisMax之间的区别; 但我期待在技术上向他人介绍一些东西.
http:// ip:8983/solr/C73/select /?defType = edismax&q = ipod OR video&fl = filename,score&hl = true&hl.fl = content contentenstem filename&hl.zetaContentField = content
对于上述查询,EDisMax产生约238个结果; 但DisMax产生0结果.那么这两个解析器处理这个查询之间的区别是什么;是什么让EDisMax产生result.Thats我想知道的....
我只是冒险进入看似简单但非常复杂的搜索世界.对于应用程序,我需要构建一个搜索机制,以按名称搜索用户.
阅读了大量的帖子和文章,包括:
如何使用Lucene进行个人姓名(名字,姓氏)搜索?
http://dublincore.org/documents/1998/02/03/name-representation/
通过优先考虑用户关系来搜索社交网络的最佳方式是什么?
http://www.gossamer-threads.com/lists/lucene/java-user/120417
Lucene索引和查询设计问题 - 搜索人员
Lucene模糊搜索客户名称和部分地址
......以及其他一些我现在无法找到的人.在我的机器上进行至少索引和基本搜索工作我已经为用户搜索设计了以下方案:
1)具有第一,第二和第三名称字段并使用Solr对其进行索引
2)使用edismax作为多列搜索的requestParser
3)使用标准化过滤器的组合,例如:音译,拉丁语到ascii convesrion等
.4 )最后使用模糊搜索
很明显,对于这方面的新手,我不确定上述是否是最好的方法,并希望听到在这个领域比我更有想法的有经验的用户.
我需要能够通过以下方式匹配名称:
1)口音折叠:Jorn匹配Jörn,反之亦然
2)替代拼写:Karl匹配Carl,反之亦然
3)缩短陈述(我相信我使用SynonymFilterFactory):Sue匹配Susanne等
.4)Levenstein匹配:Jonn匹配John等
.5)Soundex匹配:Elin和Ellen
任何指导,批评或评论都是非常受欢迎的.如果可能的话请告诉我......或者我只是白日做梦.:)
编辑
我还必须补充一点,我也有一个全名字段,以防有些人有长名字,作为其中一个帖子的例子:Jon Paul或Del Carmen也应该匹配Jon Paul Del Carmen
由于这是一个新项目,我可以以任何我认为合适的方式修改架构和架构,因此限制非常有限.
我在schema.xml中有"text_general"字段
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/><filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
我有存储文件:
document1:
spell = "contro un indice generale dei prezzi salito del 2, 1%. Rincari ben pi? evidenti, tra i prodotti da bar"
testata = "Mattino di Padova (Il)"
document2:
spell="con i prodotti di qualit? vinco la crisi dei consumi Farinetti: con"
testata = "Italia …Run Code Online (Sandbox Code Playgroud) 正则表达式允许下面显示的模式匹配语法.我正在尝试实现一个功能强大的搜索工具,尽可能多地实现这些工具.我被告知edismax是这项工作最灵活的工具.下面哪个模式匹配表达式可以用edismax完成?我能做得比edismax好吗?您能否建议我可以使用哪些过滤器和解析器补丁来实现此功能?如果我认为Solr能够实现这些搜索的可接受性能(即服务器端处理时间),我是否会梦想?
来自mysql的正则表达式语法和示例
'fofo' REGEXP '^fo' => true 'fo\no' REGEXP '^fo\no$' => true'Baaaan' REGEXP 'Ba*n' => true'Baan' REGEXP '^Ba?n => false''Bn' REGEXP 'Ba+n' => false'pi' REGEXP 'pi|apa' => true 'pipi' REGEXP '^(pi)*$' => true'aXbc' REGEXP '[a-dXYZ]' => true'abcde' REGEXP 'a[bcd]{3}e' => true'justalnums' REGEXP '[[:alnum:]]+' => true我正在使用Solr,我想知道是否可以在查询中使用LIKE子句.例如,我想知道标题中所有"纽约"的组织.在SQL中,这将被写成Name LIKE'New York%'.
我的问题 - 你如何在Solr中编写一个LIKE查询?
我正在使用SolrNet库,如果这有所不同.
我似乎无法弄清楚如何找到与SOLR的子串匹配,我已经找到了基于前缀的匹配,所以我可以得到火腿匹配汉堡包.
如何搜索"汉堡"以匹配汉堡包?我尝试过汉堡但是这个错误'*'或'?' 不允许作为WildcardQuery中的第一个字符.
如何使用SOLR匹配子串?
我已经预先确定了提升.我在solr索引中有一个字段叫做boost1.此提升字段的值将为1到10,类似于Google PR排名.这是应该应用于在solr中运行的每个查询的提升.这是我索引中的字段
boost字段应该适用于每个查询.我正在尝试实现类似于Google PR排名的功能.有没有办法用solr做到这一点?
我在使用edismax处理程序在lucene语法中进行通配符搜索时遇到问题.我从后备箱每晚都有Solr 4.0.
像'computer'这样的常规搜索会返回结果,但'com er'不会返回任何结果.同样,像'co?mput?r'这样的搜索没有结果.唯一类型的通配符搜索工作是具有尾随通配符(如计算?或计算机).
我希望能够在开头(puter)和之间(com er)使用通配符进行搜索.有人可以告诉我我做错了什么以及如何解决它.
谢谢.
此致,
伊姆兰.
我正在使用 solrnet。我有标题和描述字段。我需要同时搜索这两个字段。我该怎么做呢?
我只想将块连接查询和主查询与 edismax-parser 结合起来,就像我为 solr < 7.2 所做的那样
berlin OR _query_:"{!parent which=type:book}page_content:berlin"
Run Code Online (Sandbox Code Playgroud)
但 edismax 不能再成为用于此目的的默认解析器(s. https://issues.apache.org/jira/browse/SOLR-11501)
因此它可以与 lucene-QueryParser 一起使用来查询父级:
q={!parent which="type:book"}{!edismax qf='page_content' v='berlin'}
Run Code Online (Sandbox Code Playgroud)
它仍然适用于添加主查询,例如
q=title:berlin* AND {!parent which="type:book"}{!edismax qf='page_content' v='berlin'}
Run Code Online (Sandbox Code Playgroud)
但当我尝试时
q={!edismax qf='title' v='berlin'} OR {!parent which="type:book"}{!edismax qf='page_content' v='berlin'}
Run Code Online (Sandbox Code Playgroud)
仅评估查询的第一部分。
我的文档是:
<add>
<doc>
<field name="id">1</field>
<field name="type">book</field>
<field name="title">Book about Berlin</field>
<field name="pages">
<doc>
<field name="id">11</field>
<field name="type">page</field>
<field name="page_content">berlin in winter</field>
</doc>
<doc>
<field name="id">12</field>
<field name="type">page</field>
<field name="page_content">berlin in spring</field>
</doc>
<doc>
<field name="id">13</field>
<field name="type">page</field>
<field name="page_content">berlin …Run Code Online (Sandbox Code Playgroud)