我一直在阅读有关使用Solr和Mahout开发推荐系统的信息.
据我了解,他们处理两个不同的问题.
(或StackOverflow中的"相关"功能)
我的问题,
他们习惯于解决两个不同的问题吗?
它们可以整合吗?
我读过Mahout做离线处理和可扩展.这是否意味着Solr无法扩展?
我在ApacheSolr中定义了动态字段:
我用它来存储产品功能,如:color_feature,diameter_feature,material_feature等.由于产品正在发生变化,这些领域的数量并不稳定.
是否有可能为具有相同查询的所有动态字段获取构面结果,或者我是否需要始终在查询中编写所有字段,例如facet.field=color_feature&facet.field=diameter_feature&facet.field=material_feature&facet.field=......
我无法在SOLR搜索结果中检索带连字符的术语.例如,当我尝试搜索:超人,超人等时,我应该在搜索结果中看到超人,超人3等标题.
FieldType如下:
<fieldType name="autocomplete_edge" class="solr.TextField">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt" />
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.PatternReplaceFilterFactory" pattern="([\.,;:-_])" replacement=" " replace="all" />
<filter class="solr.EdgeNGramFilterFactory" maxGramSize="30" minGramSize="1" />
<filter class="solr.PatternReplaceFilterFactory" pattern="([^\w\d\*æøåÆØÅ ])" replacement="" replace="all" />
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt" />
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.PatternReplaceFilterFactory" pattern="([\.,;:-_])" replacement=" " replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="([^\w\d\*æøåÆØÅ ])" replacement="" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="^(.{30})(.*)?" replacement="$1" replace="all" />
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
请帮忙.
问候
在设置问题之前,我将首先尝试通过在SOLR中使用分面搜索来解释我想要实现的目标.想象一下,我有一个狗的参数,它描述了什么是适合的狗,一只狗可以有多种选择.我们称之为"住房".所以狗适合:
所以基本上当我在这个参数上使用分面搜索时,我得到了当前数据库的结果(url query facet=true&facet.field=housing):
室内(74),室外(63),儿童(71),老人(65),守卫(31).
现在,当我检查室内参数(url查询fq=housing:1&facet=true&facet.field=housing)时,我得到如下结果:
室内(74),户外(53),儿童(60),老人(53),守卫(15).
它告诉我,如果检查下一个参数"户外",有53只狗在室内和室外.我想得到结果,这将告诉"如果我检查下一个选项,将在结果中添加多少只狗".因为可以有适合户外的狗.在首先检查"室内"参数后,我想得到这样的结果:
室内(74),户外(83),儿童(78),老人(79),守卫(75)
或
室内其他方式(+0) ,户外(+9),儿童(+4),老人(+5),看守(+ 1)
在SOLR分面搜索中它是否可能是这样的?或者我使用不正确的工具来实现这一目标.因为基本上当我检查"室内"和"户外"时,我从查询中获得了正确的结果计数(url查询fq=housing:(1 OR 2)&facet=true&facet.field=housing).方面的重要性不是我预期的.
我将这个jquery函数添加到我的表单中.
$('#NewVarianceSubmitButton').click(function () {
$(this).attr("disabled", "disabled")
});
Run Code Online (Sandbox Code Playgroud)
现在,当我点击它时按钮被禁用但它不会将数据提交到数据库.如果我删除上面的代码,一切都提交到数据库就好了.我是否需要告诉jquery执行控制器操作?
Solr/Lucene 相当新。我有一个简单的要求,不确定配置 solr 是否容易做到这一点。
假设所有文档只有一个文本字段,未标记。
当查询进来时,我希望结果按匹配(包含)文本的百分比排序。百分比计算公式为len(query)/len(matched text field)
例如,有三个文档,文本字段如下:
doc1: abcdefghij
doc2: abcdefgh
3: abc
如果搜索词是“cde”,则匹配 doc 1 和 doc 2(文本字段包含搜索词)。对于 doc 1,百分比匹配 = 3/10=30%
对于 doc 2,百分比匹配 = 3/8=37.5%
所以结果应该是:
DOC2
DOC1
这有意义吗?如何使用 solr 实现它?
谢谢。