Lucene的StandardAnalyzer在索引字符串/首字母缩略词时会删除其中的点。
我希望Lucene保留点,因此我使用WhitespaceAnalyzer类
我可以将我的停止词列表提供给StandardAnalyzer…但如何将其提供给WhitespaceAnalyzer
感谢阅读。通过扩展WhiteSpaceAnalyzer和重写方法创建您自己的分析器,如下所示
public TokenStream tokenStream(String fieldName, Reader reade
我正在尝试使用中的空间示例进行位置感知搜索
schema.xml有一个geohash字段,但该字段不存在于用于索引的任何.osm文件(存在于数据文件夹中)中。我无法理解该值是如何分配给它的,因此当我给出此查询时
http://localhost:8983/solr/select/?q=_val_:"recip (ghhsin(geohash(44.79, -93), geohash, 3963.205), 1, 1, 0)"^100
结果集已检索到geohash值。这是怎么发生的?请帮帮我。
我在一个非常简单的SOLR/Lucene数据库中输入了一长串单词。我的目标是从单术语查询的列表中找到“相似”单词,其中“相似性”具体理解为编辑距离内的(damerau)levensin。我知道SOLR为拼写建议提供了这样的距离
在我的SOLRschema.xml中,我配置了一个字段类型string:
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
显然,
C:\Dev
C:\Dev\Projects
C:\Dev\Projects\testproject
C:\Dev\Projects\Test Project\Test.cs
C:\Dev\Projects\Foo
C:\Dev\Projects\Foo\Foo.cs包含单词test
基本文档将具有id、类型、名称和内容字段,其中类型为文件或文件夹,名称为文件名或文件夹名
搜索测试时,我应获得:
C:\Dev结果的祖先
C:\Dev\Projects结果的祖先
C:\Dev\Projects\T
我使用的是查询式
criteria = (sql OR sqlserver OR "sql server") AND java AND delphi .
在本例中,当我使用下面提到的默认解析器代码时:
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field, analyzer);
Query query = parser.parse(criteria);
当我在下面的代码中使用QueryParser.或\u运算符时
如何在SOLR中发布span查询(span、SPANAR等)?我已经
我做了一些研究,但我说不出一个简单的方法
似乎我需要实现一个QueryParserPlugin来完成
我想做的事。这条路对吗?这肯定是以前做过的。做
有人有例子的链接吗?我找不到任何东西。Span当前不支持查询()
从这个角度来看,通过实现QueryParserPlugin,您似乎走上了正确的道路
如果你实现这个,考虑提交补丁!
我正在我的文件夹中创建一个Lucene索引,我正在索引txt文件的内容。我希望我的内容没有stopwords索引,但在通过分析器后,实际上在搜索时会让我停止使用stopwords,但我需要所有文本索引。
我把代码放在下面:
IndexWriter writer = new IndexWriter(new SimpleFSDirectory(indexDir),
new SpanishAnalyzer(Version.LUCENE_36),
我正在使用Lucene在数据集中搜索,我现在需要知道“”搜索(我指的是精确短语搜索)机制是如何实现的
我想让它能够在用户输入“littlecat”时生成所有“littlecat”点击。我现在应该操作索引代码,但至少我现在应该知道“”搜索的工作原理。我想让它能够在用户输入“littlecat”时生成所有“littlecat”点击结果
这听起来可能很容易,但很难实现。对于人类来说,“小”和“猫”是两个不同的词,但对于计算机来说,它无法将“小”和“猫”与“小”区分开来,除非您有一本词典,并且您的代码在
标签: Lucene
html-parsingapache-tika
我生成包含菜单和内容部分的html文档。然后我想提取这些文档的内容,将其提供给lucene索引。但是,我想从内容提取中排除菜单,因此只对内容进行索引
<div class="menu">my menu goes here</div>
<div class="content">my content goes here</div>
我的菜单在这里
我的内容在这里
使用apache tika实现这一点最简单的方法是什么?您可以使用解析器将html解析
我有文件{customerID:111,name:bob,approved:yes}
“已批准”字段未编制索引。我有一个映射集为“approved”:{“type”:“string”,“index”:“no”}
因此,只有“customerID”和“name”字段被索引
如何在不重新索引整个文档的情况下仅更新源中的approved字段?我可以传递要更新的部分文档,例如{approved:no}
这可能吗?您要找的是。问题是,这实际上会隐式地执行delete+put+index,但您只需将这段时间
我想根据用户上次访问的时间筛选出文档,并获取单个用户最近访问的文档,然后根据报价代码对所有筛选出的文档进行分组
我通过执行tophits聚合来获取用户最近访问的文档。但是,我无法使用offercode对tophits聚合的结果进行分组
ES查询以获取用户的最新文档
{
"took": 53,
"timed_out": false,
"_shards": {
"total": 2,
"successful": 2,
"fail
我正在使用弹性搜索按字段进行非常基本的搜索:
我的索引映射类似于:
{
"channels": {
"mappings": {
"channel": {
"properties": {
"channel": {
"properties": {
"description": {
"type": "string"
},
我正在开发一个有餐馆的应用程序,每个餐馆都有送货范围,并且需要为用户回答哪些餐馆可以送货到他/她的当前位置
我用hibernate spatial获得了一个简单的解决方案,但当我进入hibernate搜索,将全文搜索与地理搜索结合起来时(由于可伸缩性),我还没有找到解决方案。一些想法/建议/例子
例如,在Hibernate Spatial中,查询如下所示:
SELECT r FROM Restaurant r WHERE within(:point, r.coverage)
显然,保险范围是指
我刚刚踏入lucene世界,试图了解ConstantCorerange查询及其在lucene 6.2.1中的替代方法的使用
谷歌搜索后,我发现ConstantCorerange已被弃用,我应该从以下链接选择NumericRangeQuery或TermRangeQuery:
我目前正在使用Lucene 6.2.1库并尝试更改此代码段:
public Query toQuery() {
return new ConstantScoreRangeQuery(getName(), lo
我希望能够在Lucene.Net中通过多个客户端同时搜索和索引
它是否可能是线程安全的
IndexSearcher的同一个实例是否可以跨线程共享?是..
甚至索引也是如此 您可以同时编制索引和搜索,但在重新创建搜索者之前,您对索引所做的更改对搜索者不可见。创建Searcher对象时,Searcher将拥有索引的快照 索引搜索可以而且应该跨线程共享
诀窍在于决定何时用索引的新快照刷新搜索器
我写了一篇文章,展示了我如何编写代码,在线程之间共享搜索者,同时确保搜索者始终使用最新索引
我并不是说我的解
我正在使用类型字段进行搜索。我只想在另外两个字段有值的情况下显示特定类型的结果。所以在我的过滤器查询中,我认为应该是(类型:sometype和field1:*和field2:*),但通配符查询不能以*开头 使用范围查询表示“字段必须有任何值”,例如:
type:sometype和field1:[*到*]和field2:[*到*]
将现有Lucene索引拆分为两半的最佳方法是什么?即,每个拆分应包含原始索引中文档总数的一半。一个相当强大的机制是使用文档校验和,对索引数进行模化,要决定它将进入哪个索引。拆分现有索引(无需重新编制所有文档的索引)的最简单方法是:
制作现有索引的另一个副本(即cp-r myindex mycopy)
打开第一个索引,删除一半文档(范围0到maxDoc/2)
打开第二个索引,并删除另一半(范围为maxDoc/2到maxDoc)
优化这两个指标
这可能不是最有效的方法,但它只需要很少的编码。Luce
这可以看作是一个一般的Java问题,但为了更好地理解,我使用Lucene作为示例
您可以在Lucene中使用不同的标记器来标记文本。有一个主要的抽象标记器类,然后是许多不同的类来扩展它。令牌过滤器也是如此
现在,似乎每次您要为文档编制索引时,都会创建一个新的标记器。问题是,既然tokinzer只是一个实用类,为什么不将其设为静态类呢?例如,将所有字母转换为小写的标记器可以有一个静态方法,该方法只对它获得的每个输入执行此操作。为我们要索引的每一段文本创建一个新对象有什么意义
需要提及的一点是,To
我想运行一个进程,彻底销毁然后从头开始重建我的lucene.net搜索索引
我被困在破坏性的部分
我打过电话:
IndexWriter.Commit();
IndexWriter.Close();
Analyzer.Close();
foreach(Directory.ListAll()中的var name){Directory.ClearLock(name);Directory.DeleteFile(name);}
Close()目录
但该过程失败,因为仍然是文件“\u 0.cfs”上的文件处
我是Lucene的新手,我想知道他们之间的区别(如果有的话)
及
PhraseQuery要求要搜索的字段中存在所有术语
您的BooleanQuery不要求所有术语都存在
这就引出了一个问题,即您的短语查询与:
term1 = new TermQuery(new Term(...));
booleanQuery.add(term1, BooleanClause.Occur.MUST);
term2 = new TermQuery(new Term(...));
booleanQuer
我正在查询SolR server以获取价格范围
如何构造一个立即返回的查询:
所有项目的价格范围(不带方面查询)
具有方面查询的项目的价格范围(或列表)
对于这样的滑块,我需要以下四个值:
all_min=============user_min========user_max========all_max
用于获取最小值和最大值。使用或获取特定价格范围内的面。StatComponent很好,但我可以在结果分组的每个组上使用它吗?我想知道每组的价格范围。我该怎么做?@Bob Yoplait
问题:在类别为999的文档上添加2倍增强。
解决方案:3.2
尝试使用:
bq组件bq=category\u id:999^2
->这是不可接受的,因为它会产生加法(非乘法)助力
boost(在太阳黑子3.x中是相乘的)和a,比如:boost=sum({!term f=category_id}999,1)
->术语查询不返回1或0,而是必须标准化的lucene分数
IF函数
->solr 3.2中还没有,将在下一个版本中提供:您是否尝试过添加增强功能,但发现它失败了?我的经验是,这种
是否有助于建立质量保证体系
提前感谢。如何启动:
真正的知识是如何运作的:
自然语言QA系统如何工作:
L.Hirschman,R.Gaizauskas,《自然语言问答:这里的观点》,自然语言工程,第7卷第4节,第275-300页,2001年12月
相关问题(答案推荐Lucene):
启动的工作原理:
真正的知识是如何运作的:
自然语言QA系统如何工作:
L.Hirschman,R.Gaizauskas,《自然语言问答:这里的观点》,自然语言工程,第7卷第
我是Lucene world的新手,对这门学科的工作知识不多。我需要提取文档术语向量,我在网上找到了以下代码
我的问题是,我不知道如何获取上述功能所需的文档ID(列出文档编号)。我试过两种方法,比如
TermDocs docs = reader.termDocs();
但它不起作用。Lucene从零开始分配ID,这是上限,因此您可以简单地循环获取所有ID,跳过已删除的文档(Lucene在调用deleteDocument时将其标记为删除):
for(int-docNum=0;docNum
我正艰难地试图在Lucene图书馆周围盘旋。这就是我到目前为止所做的:
public void shingleMe()
{
try
{
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
FileReader reader = new FileReader("test.txt");
ShingleAnalyzerWrapper shingleA
我有两个搜索词“86746184549”和“3302093809”。我正在执行两个单独的术语查询,以获取与每个ID匹配的一个文档
"size":1,
"query":{
"term":{
"from_user_id": "86746184549"
}
}
及
是否有一种方法可以组合这两个查询,类似于我们在facet中所做的
{
"facets":{
"facet_1":{
},
"facet_2":{
},
在Lucene的新4.4.0版本中,近实时管理器(org.apache.Lucene.search.NRTManage)已被替换为
有没有人有一些新ControlleDrealtimeRecoverThread使用的示例代码
编辑:我在下面回答我自己的问题我对这个问题做了一些研究,并建立了一个实用类型。。。没有经过充分的测试(特别是在并发条件下),无论如何它都可以工作,而且我非常确定它是线程安全的
@Slf4j
公共类LuceneIndex{
私人最终索引编写器(IndexWriter);;
私
我正在使用Lucene为XML文件编制索引。文件将进入输入目录,编制索引并移动到输出目录
在某些情况下,它工作正常,但很少有文件失败
当我尝试使用Windows命令提示符重新创建该文件时,它显示该文件已在使用,这告诉我java进程仍然连接到该文件
有人能帮我确保Lucene java进程在索引后离开文件吗
这是我正在尝试的代码
int originalNumDocs = writer.numDocs();
for (File f : queue) {
标签: Lucene
analyzerquery-parser
我有一个非常简单的分析器,它试图用空格替换正斜杠。因为QueryParser强制我在解析之前用斜杠转义字符串,所以我在分析器中添加了一个MappingCharFilter,用单个空格替换\/。分析仪的定义如下:
@Override
protected TokenStreamComponents createComponents(String field, Reader in) {
NormalizeCharMap.Builder builder = new NormalizeCharMa
以前,我有过这样的经历:
{
query: {
function_score: {
filter: {
and: [
{
term: {
'currency': 'usd',
'_cache': false
}
}
]
},
script_score: {
"
我在MongoDb中有一组文档(url:String,title:String,content:String)。url是一个唯一的字段,包含如下内容server://aaa/bbb/1.html.
我想用Lucene索引数据,而不是Mongo(我可以更改存储)。我将把url存储在Lucene的索引中。当用户通过关键字搜索某个内容时,我将使用Lucene执行查询,读取url字段,然后转到Mongo,根据url提取文档。它工作得很好
但我不能通过url从Lucene的索引中删除数据,因为它包含许多不
检查字符串a是否是Lucene中字符串b的一部分的最佳方法是什么。例如:a=“资本”和b=“柏林是德国的首都”。在这种情况下,b包含a并符合要求 我认为您的问题可以被视为某个字段是否包含某个术语。
基本术语查询应该足以解决您的问题,在大多数分析工具中,“柏林是德国的首都”将被分析为“柏林”、“首都”“德国”(如果您使用基本停止词)
您还可以使用PhraseQuery来解决您的问题(不过,您的问题不是PhraseQuery最合适的场景)
Lucene在Action 2nd中,3.4 Lucene的
标签:elasticsearch Lucene
spring-data
我有以下基于注释的弹性搜索配置,我已将索引设置为不进行分析,因为我不希望这些字段被标记化:
@Document(indexName = "abc", type = "efg")
public class ResourceElasticSearch {
@Id
private String id;
@Field(type = FieldType.String, index = FieldIndex.not_analyzed)
private Stri
我们正在开发一个使用Cloudant作为数据库的应用程序,它是Couchdb的一个变体。Cloudant开始变得有点贵,因为上一个问题,我们也不可靠。我们已经失去了一天与DBs的联系。所以我们决定建立我们自己的Couchdb服务器
实际上,我们有两种选择CouchDB 1.6和2.0开发者预览版。第二个提供了我们所需要的所有功能,如果我们编译它的话,它支持全文搜索。第一个没有Mango查询,没有Dreyfus和Closeau。我们只能安装couchdb lucene来启用全文搜索,但实际上我们在
在ZF2中,我使用以下代码生成Lucene查询:
$query = new Lucene\Search\Query\Boolean();
$term = new Lucene\Index\Term($search->type, 'type');
$subqueryTerm = new Lucene\Search\Query\Term($term);
$query->addSubquery($subqueryTerm, true);
$ter
我不熟悉Liferay和ElasticSearch。Indexer类和IndexWriter类之间的主要区别是什么?。我使用BaseIndexer为Elasticsearch中的文档编制索引。IndexWriter还有一些我认为用于拼写检查和建议的方法。请帮助我理解这两门课之间的明显区别。我无法深入了解这一点,因为我自己的知识很肤浅,但我将用从这些文档中学到的知识来回答:
索引器用于控制索引内容和索引方式。
IndexWriter用于控制文档创建、更新和删除的时间和方式。因此@Russ Bohl
我知道,一般来说,弹性搜索在大多数情况下都更适合使用,但我想特别了解Umbraco,它是否适合使用?或者如果lucene更好我以前没有使用弹性搜索,但我经常使用Umbraco,我使用lucene,主要是通过使用lucene的检查
在这里阅读有关检查的信息
请参见我在Umbraco中使用Examine here设置的一些高级搜索的示例
Lucene是一个搜索库,Elasticsearch是一个基于Lucene的搜索引擎,Umbraco是一个CMS。不幸的是,这个问题太主观了,没有正确的答案,也没有
我想知道为什么Elasticsearch没有为以下内容提供任何结果:
但它给了我以下方面的结果:
GET /stag/_search
{
"query": {
"multi_match": {
"type": "phrase_prefix",
"query": "ferran may",
"fields": [ "fullName", "fullName.folded" ]
}
}
}
我认为每个单词可能有一个最小字符长
从文档中我了解到,使用\u searchAPI上的脚本搜索文档很容易,例如,在这里,我可以在创建脚本条件时使用现有的文档值
GET /_search
{
"query": {
"bool" : {
"must" : {
"script" : {
"script" : {
"source": "doc['num1'].value &
我正在尝试使用hibernate搜索向实体添加全文搜索。我们的模式使用基于鉴别器的多租户,其中每个租户都是一个带有id的公园
@Entity
@Indexed
public class ProductModel {
@Field
// park is the tenant
private Long parkId;
@Field(index = Index.YES, analyze = Analyze.YES)
@Analyzer(definition = "customa
我对Elasticsearch非常陌生,我正在尝试创建一个带有模糊查询的搜索引擎
我可以使用以下代码通过模糊搜索获得结果:
{
"query": {
"match": {
"skill": {
"query": "Project management",
"fuzziness": 2,
"pref
我正在使用SOLR和NGramTokenizerFactory来帮助创建单词子字符串的搜索标记
NGramTokenizer配置的最小字长为3
这意味着我可以搜索例如“unb”,然后匹配单词“难以置信”
然而,我对像“我”和“在”这样的短词有一个问题。SOLR没有为它们编制索引(我怀疑这是因为NGramTokenizer),因此我无法搜索它们
我不想将最小字长减少到1或2,因为这会创建一个巨大的搜索索引。但我希望SOLR包含长度已经低于这个最小值的整个单词
我该怎么做
/Carsten首先,试着
我已经在一个网站上设置了Solr索引的新实例。我希望Solr不要索引某些URL模式。有没有办法提及这种排除模式
问候,,
第可以在程序中执行,仅当模式与排除模式不匹配时才进行索引。可以在程序中执行,仅当模式与排除模式不匹配时才进行索引。您可以使用。在该UpdateRequestProcessor中,如果文档与正则表达式匹配或不匹配,您可以决定是否为文档编制索引。您可以使用。在这个UpdateRequestProcessor中,如果文档与正则表达式不匹配,您可以决定是否为文档编制索引。您是否有一个
嘿
我正在部署一个包含3000多万文档的Solr服务器。目前,我正在测试搜索性能,结果非常依赖于我同时执行的查询数量:
1同时查询:2516ms
2同时查询:42504469毫秒
3个同时查询:578162196219ms
4个同时查询:648472037719781毫秒
Jetty线程池配置为默认值:
新建class=“org.mortbay.thread.BoundedThreadPool”
Set name=“minThreads”10
Set name=“lowThreads”50
S
我有这种情况
Entity Company_id
-----------------
E001 1
E001 2
E003 1
E002 2
E001 3
E003 3
我想知道有多少公司有实体(E001和E003),在这种情况下,结果应该是公司1和3
在SQL中,可以通过进行嵌套查询来解决此问题,但我应该使用类似luncene的方法,因为性能需要此查询将对每个页面执行50次以上
注:我也可以限制3或4个实体,例如
标签: Lucene
lucene.netsimilaritymorelikethis
我想在Lucene中为类似的文档打分。让我解释一下我的情况
例如,假设我的文件中有以下记录,我在这些记录上创建了索引
ID|First Name|Last Name|DOB
1 |John |Doe |03/18/1990
1 |John |Twain |03/18/1990
3 |Joey |Johnson |05/14/1978
3 |Joey |Johnson |05/14/1987
4 |Joey |Johnson
我使用下面的代码来索引一个整数值
String key = hmap.get("key");
System.out.println("key == "+Integer.parseInt(key));
if(key!=null && key.trim().length()>0)
doc.add(new IntField("kv", Integer.parseInt(key),IndexFieldTypes.getFieldType(INDEX_STORE_FI
我需要对大量文件进行分类。我见过许多用于分类的经典机器学习算法。但突然间,我问自己,我们能用搜索引擎做到这一点吗
我的大致想法是:
我们有几个用于标记文档的文件夹,例如:
文件夹1=类别1
文件夹2=类别2
然后,对于每个未标记的文档,我们使用它作为标准,让搜索引擎搜索每个文件夹,返回结果最多的应该是目标类别
我不确定这是否可行。我不知道如何为一组文档创建搜索引擎,Bing或Google可以为其定制吗?或者我需要用Lucene或其他什么东西来构建一个吗?是的,搜索引擎存储了进行文本分类所需
我需要用Lucene查询语言实现以下谓词:
{param} IN optionIds
其中,{param}是我的外部参数,optionId是数组(或集合)
例如,我的文档具有以下选项ID:
"optionIds": [
72,
44,
11,
9,
10
]
以下Lucene谓词optionId:72正确返回此文档
但是如何基于以下值返回此文档:72、11、9
以下谓词optionId:72、11、9不起作用,Lucene查询返回空结果
请演示如何
我环顾四周,没有关于这样一个问题的线索
我正在使用,我遇到了一个问题。我首先对整个字符串进行分析,然后使用AND,但结果并不准确。搜索整个字符串不会返回任何结果,但搜索'brian cardeau'会返回142个结果,其中只有两个结果是相关的。它似乎是和对'brian'部分进行排序,并找到包含该单词的所有结果。有办法解决这个问题吗
我使用基本搜索作为
try {
const response = await client.search({
q: 'brian cardeau'
}
上一页 1 2 ...
10 11 12 13 14 15 16 ...
下一页 最后一页 共 78 页