我使用Lucene和Compass,我遇到了一个问题:
try {
CompassHits hits = compassQuery.hits();
for (CompassHit compassHit : hits) {
if (results.size() >= maxResults) {
Log.info(this, "Number of results exceeded %,d for query %s", maxResults, query);
break;
} else {
results.add((T) compassHit.getData());
}
}
}
Run Code Online (Sandbox Code Playgroud)
当数据正在进行compassHit.getData());并且它是100次点击它重新执行搜索时,是否有可能将其更改为200或更多?
来自wiki apache org:
"迭代所有命中都有两个原因.首先,当你需要超过100次点击时,返回Hits对象的search()方法会在内部重新执行搜索".
我的问题是有机会将这个值"100"改为"200"吗?但重要的是我使用罗盘或原始的Lucene.
我们在Grails应用程序中使用Grails 2.1.1和Searchable插件0.6.4,并在某些域上实现搜索,下面显示了所有映射.
class User {
.....
static hasMany = [userEducations : UserEducations , userWorkings : UserWorkings ]
......
static searchable = {
content: spellCheck 'include'
all termVector: "yes"
userEducations component: true
userWorkings component: true
}
......
}
class UserEducations {
.....
Schools schools
.....
static belongsTo = [user : User ]
......
static searchable = {
content: spellCheck 'include'
all termVector: "yes"
schools component: true
}
......
}
class UserWorkings {
.....
Organizations organizations
.....
static belongsTo = [user : …Run Code Online (Sandbox Code Playgroud) 如何使用Grails Searchable Plugin重音不敏感进行全文搜索?
我的Grails应用程序使用可搜索的插件,该插件基于Compass和Lucene构建,以提供搜索功能.我有两个可搜索的课程,比如作者和书.我已将这些类映射到搜索索引,因此只能搜索某些字段.
要在两个类中执行搜索,我只需调用
def results = searchableService.search(query)
Run Code Online (Sandbox Code Playgroud)
同时在两个类中进行搜索的一个很好的功能是,该results对象包括有关包含的结果数,可用结果数,分页详细信息等的元数据.
我最近approved在Book类中添加了一个布尔标志,我从不希望未经批准的书籍出现在搜索结果中.一种选择是将上面的调用替换为:
def bookResults = Book.search(query + " approved:1")
def authorResults = Author.search(query)
Run Code Online (Sandbox Code Playgroud)
但是,我现在需要弄清楚如何结合两个结果的元数据,这可能是棘手的(特别是分页).
有没有办法通过一个查询搜索Book和Author,但只返回已批准的书籍?
我目前正在使用Lucene.我的要求就像facebook搜索框.用户搜索人和朋友.但在我的要求中,用户有隐私设置,如姓名,位置,电子邮件地址,每个人或只有朋友可见.他可以向朋友和社区的其他成员展示和隐藏这些字段.
我已根据姓名,位置和电子邮件地址实施了简单搜索.但现在我在隐私设置的基础上修改搜索.
这是我的情景 ..
用户A具有隐私设置:
名称仅向朋友显示
电子邮件显示给每个人
位置不会显示给任何人.
如果用户X在搜索框中键入用户A的位置,则它不应该在结果中.但是,如果用户X 在搜索框中键入用户A的名称,则应显示该用户,因为用户A没有限制名称,并且在隐私设置中他的朋友可以看到它.
你能指导我一下这个方法吗?
如果我没有明确写出我的要求,请告诉我.
我已经分析了以下方法,
1 - IndexSearcher的解释方法(它将达到整体性能)
2-探索过滤器但是得不到多少
我的方法:
在名称的基础上
获取resultSet根据位置
获取resultSet在电子邮件地址的基础上获取resultSet
循环每个3结果集并应用与隐私设置相关的条件,并根据隐私设置排除项目.并最终合并所有3个结果集.
如果还有其他办法吗?请与我分享.谢谢.
我似乎无法找到关于这个选择的最新评论.回到'06,有人批评Hibernate Search是不完整的,并没有准备好与Compass竞争,现在呢?有没有人同时使用这两者并对决策有一些看法.
我正在空闲时间用Java开发一个Web应用程序,它只是我,所以我希望尽可能地切角,同时尽量减少对最终产品的影响.说过我的项目的搜索能力是优先考虑的!我花了很多时间制作数据库模型来支持系统.能够让用户获得他们正在寻找的东西是什么将我的应用程序分开.所以,速度是可以消耗的......显然是合理的.
以下是我目前对这个应用技术的想法,如果你看到任何明显的newb错误是温和的...我是一个无所不知的专家.
DB:PostgreSQL
平台:Java
框架:Spring,Hibernate,Seam
显然,我已经选择了所有免费(如啤酒)技术和那些我可以说一起玩得很好的技术.那么你们有什么想法,Compass或者Hibernate Search来解决这个问题?
-Nomad311
我正在使用Compass/Lucene来搜索和索引我的数据库.我想在搜索时忽略变音符号和字符大小写,这样查询"foo"将匹配"Fóo"和"foo",查询"fóó"将匹配"fóo"和"fOO".
基于我所读到的内容,似乎我需要更改Compass在索引和搜索我的上下文时使用的默认分析器.我已经找到了指定要使用的分析器的位置,但我似乎无法找到满足我要求的分析器实现.是否已经存在一个忽略变音符号和字符大小写的分析器,或者我是否需要编写自己的分析器?
grails ×5
lucene ×4
java ×3
hibernate ×2
diacritics ×1
grails-2.0 ×1
groovy ×1
mysql ×1
search ×1
searchable ×1