我需要提高Lucene搜索查询的性能。
我可以使用RAMDirectory吗?它优化了性能吗?这个有索引大小限制吗?
如果有人能列出使用RAMDirectory的利弊,我将不胜感激
谢谢。RAMDirectory速度更快,但不会写入磁盘。它只在程序运行时存在,并且每次程序运行时都必须从头开始创建
如果您的索引足够小,可以轻松地放入RAM中,并且您不经常更新它,那么您可以在磁盘上维护一个索引,然后使用RAMDirectory(Directory dir)构造函数从中创建一个RAMDirectory
是否可以在alfresco中进行Lucene查询,根据节点的父/子属性查找节点?例如,我想查找属性“foo”设置为“1”的所有节点,以及属性“baz”设置为“2”的子关联与它们关联的节点(可能以某种方式指定其子关联的名称)
差不多
@crl\:numeroAtto:"6555" AND @crl\:firmatario:"Marco rossi"
其中,“numeraoto”是父节点的属性,“firmatario”是子节点的属性。关联类型为“firmatari”(不在查询中,因为我不知道如何使
我需要一个合适的加权算法来返回查询中最相关的令牌…我使用Lucene 3.0生成令牌。我正在考虑使用tf idf概念?有人能推荐一个更好的算法或修改的tf idf吗?Lucene已经实现了一个tf-idf变量进行加权。见:
然而,加权不再是最先进的技术,在术语突发方面缺乏一些性能。据我所知,有人试图在Solr4.0中引入可插拔算法。对于某些版本,有bm25或某些更新算法的补丁可用
经过多次谷歌搜索,我决定把我的问题贴在这里,希望有人能帮助我。我想要实现的是执行如下查询:
q1: (adjective) "jumps" (preposition) // any adj followed by "jumps" followed by any prep.
q2: (adjective:brown) "jumps" (preposition) // brown as adj. followed by "jumps" followed by any prep.
q3: (a
标签: Lucene
finite-automataprefix-tree
我必须实现一个从给定字符串中修剪前缀的函数。前缀列表可能非常大,因此一个接一个地尝试常规Scala函数将花费高昂。因此,我转向Lucene,以创建一个FSA,它将更小、更有效地测试前缀
在这之后,我发现我正在寻找的自动机是。但是,我不知道如何使用自动机来获取前缀是否与字符串匹配。所以我有两个补充问题:
如何使用通用的自动机,以获得启动和启动
匹配的结束字符
你是如何强迫比赛在晚上进行的
字符串的开头
我有一个lucene索引(由ES 6.X.X生成),我想了解每个字段消耗了多少存储空间(字节)
有人知道我如何计算在所有文档中存储给定字段的所有值需要多少字节吗?我在《路加福音》中打开了索引,但我不熟悉这个工具,我不清楚如何回答这个问题。有更好的工具吗?为什么你想知道每个字段的大小,您知道在任何索引数据结构中,每个条目的大小都是无关的吗?但您当然可以得到整个条目的大小index@AdityaAgarwal我对单个文档的字段大小不感兴趣——我想知道每个字段在整个索引中消耗了多少。有些lucene数
保留字母之间出现的点。您可以使用StandardAnalyzer,它使用StandardTokenizer。或者您可以使用StandardTokenizer创建自己的分析器
更正:StandardAnalyzer不会有帮助,因为它使用StandardFilter,它会从首字母缩略词中删除点。您可以使用StandardTokenizer和附加过滤器(如小写过滤器)构造自己的分析器,减去StandardFilter。A将保留点。A删除停止词列表。您应该准确地定义所需的分析,然后结合分析器和令牌过滤器
我正在使用SOLR和NGramTokenizerFactory来帮助创建单词子字符串的搜索标记
NGramTokenizer配置的最小字长为3
这意味着我可以搜索例如“unb”,然后匹配单词“难以置信”
然而,我对像“我”和“在”这样的短词有一个问题。SOLR没有为它们编制索引(我怀疑这是因为NGramTokenizer),因此我无法搜索它们
我不想将最小字长减少到1或2,因为这会创建一个巨大的搜索索引。但我希望SOLR包含长度已经低于这个最小值的整个单词
我该怎么做
/Carsten首先,试着
最近,我们已经将Lucene2.4.1支持添加到与Jackrabbit1.6.2一起工作的应用程序中。我们所做的一切都像jackrabbit教程中描述的那样。一切都很好。但我注意到一些奇怪的行为,找不到任何关于它的文档。我决定问你这件事
例如:我在jcr:data属性的Nodejcr:content中有以下文本
The quick brown fox jumps over the lazy dog
!@#$%^&
travmik!
tra!vmik
我的XPath查询如下所示:
我使用SolrJ将数据发送到我的Solr服务器。
当我启动我的程序时,它会以每秒1000个文档的速度索引内容(我每提交250000个文档)
我注意到,当我的索引中充满了大约500万个文档时,它开始爬行,不仅仅是在提交时,还包括添加时间
我的Solr服务器和索引程序在同一台机器上运行
以下是我的solrconfig中的一些相关部分:
false
1024
150
关于如何解决这个问题有什么建议吗?合并因子似乎真的非常高
你真的想要吗
如果您不使用容易导致ulimit问题的复合文件(如果您是lin
我正在尝试复制一些动态字段以进行拼写检查。但是,。下面是schema.xml中的相关字段:
<dynamicField name="*_text_fr" stored="false" type="text_fr" multiValued="true" indexed="true"/>
<dynamicField name="*_text_frs" stored="true" type="text_fr" multiValued="true" indexed="true"/>
我已经实现了solr搜索,一切正常。只是一个简单的问题。当用户在我们的数据库中搜索例如新款本田思域时。Solr只会返回包含所有三个关键字“New”、“Honda”和“Civic”的结果
如何使solr返回包含所有三个关键字NEW HONDA CIVIC以及较少关键字(即HONDA CIVIC)的结果。您需要确保您的模式定义字段的方式使分析器能够将其分解为更小的术语。例如:
<fieldType name="text" class="solr.TextField" positionIncre
我对lucene/中的搜索过程有一个问题。
我使用此代码进行搜索
Directory directory = FSDirectory.GetDirectory(@"c:\index");
Analyzer analyzer = new StandardAnalyzer();
QueryParser qp = new QueryParser("content", analyzer);
qp.SetDefaultOperator(QueryParser.Operat
我正试图找出我应该做什么来索引包含“.”的关键字
这是我的名字
我想在我的索引中索引这些术语:this和name
我使用标准分析仪。我尝试扩展WhitespaceTokensizer或扩展TokenFilter,但我不确定方向是否正确
如果我使用StandardAnalyzer,我将获得“this.name”作为关键字,这不是我想要的,但是Analyzer会为我正确地完成其余的工作。如果我理解正确,您需要使用一个标记器来删除点——也就是说,任何包含点的名称都应该在该点拆分(“here.I.am”
我想使用Lucene索引源代码。源代码已经使用编译器插件进行了预分析。编译器的输出是源代码中显示的ID列表。每个ID都包含有关的信息
ID在中定义的模块(与中使用的相反)
显示ID的源范围(即行:列:列:列),以及
ID是在此位置定义的还是仅在此处使用的
例如,给定此源代码模块(在伪代码中)
以下是编译MyModule时编译器可能输出的内容:
MyModule.foo,3:1-3:3,definition
MyOtherModule.bar,4:7-4:9,use
请注意,输出中显示的所有
我已为具有标题字段的文档编制了索引,其值如下:
title one; second hand; third bird
因此,我的文档有3个标题:
标题一
二手货
第三只鸟
对于以下示例查询,应找到Twis文档:
标题一
手
鸟
第三
但当用户类型为:
标题鸟
第二个
第三名
如前所述,所有标题都存储在一个数据库字段中:
“标题一;二手货;第三只鸟”
我可以使用什么样的分析仪使其如我所述工作?
我已经编写了扩展CharTokenizer的简单分号标记器-但这还不够,因为数据库太大,我
我有2个文档,正在搜索关键字“Twitter”。假设两个文档都是带有“tags”字段的博客文章
文档A在“标签”字段中只有一个术语,它是“Twitter”。
文档B的“标签”字段中有100个术语,但其中3个是“Twitter”
弹性搜索为文档A提供了更高的分数,即使文档B具有更高的频率。但是分数被“稀释”了,因为它有更多的术语。既然文档B具有更高的搜索频率,我如何给它更高的分数
我知道ElasticSearch/Lucene根据文档中的术语数量执行一些规范化。如何禁用此规范化,使文档B获得更高的
有没有简单的方法:
工具
代码片段
将TFIDF向量从lucene索引导出为人性化格式,如JSON。首选的实现语言是Java和Python
谢谢
注:
这里我的目标不是调试/浏览索引——为此我可以使用Luke
我的目标是能够将tfidf向量转储为更便携的数据格式
不知道你到底想完成什么。如果您正在寻找诊断工具或类似的工具,您有没有研究过?或者出于某种原因,你真的需要JSON/etc吗?@femtoRgon,谢谢你的提醒——我不是在寻找类似luke的东西——而是以更常见的格式(如JSON)导出它。
我正在使用ElasticSearch集群,每台机器都有1G缓存。我将搜索器配置为5000/页
当我搜索第3页时,它花费了大约400毫秒。但当我搜索第300页时,成本增加到5000毫秒以上!在这种情况下,大约60%的缓存是空闲的
为什么成本增加了10倍以上?为了达到这一目的,Elasticsearch必须检索以前的所有页面,只是在最后丢弃它们。使用from:1000,size:100进行搜索等同于使用from:0,size:100100进行搜索,只是您只得到最后100个结果。这也意味着,每个文档都
在基于lucene的hibernate搜索中如何处理并发访问和修改
我已经知道writer锁和reader锁,一个writer可以同时打开一个索引。
若索引被更新一次,那个么在这种情况下,已经打开的读卡器将无法看到更改,因为它们需要关闭&再次打开
在这种情况下,我的问题是,如果一个读卡器已经打开,然后通过lucene索引更新删除某个实体。那个读者是怎么处理的?它是否会返回已删除的实体id并尝试打开它 IndexReader的生命周期和对IndexWriter的刷新操作与用户事务相耦合,但考虑到应
我们已经为节点和关系启用了自动索引。默认情况下,NEO4J将为节点创建名为“node_auto_index”的索引,为关系创建名为“relationship_auto_index”的索引。但匹配查询的性能似乎很差(与Elasticsearch中的类似数据集相比)。看起来他们没有使用索引
有没有办法让MATCH子句使用auto_索引
我们还尝试查看模式索引。看起来它只能创建节点索引。我们的查询在关系上使用一些属性,因此即使在使用模式索引之后,查询的性能也是不可接受的。
有没有办法创建模式关系索引
我是neo4j和elastic search的新手。我一直在研究这两个问题,现在有了一个用例,我需要将两者集成起来。因为我知道弹性搜索和neo4j分别存储数据,所以数据会被复制。这两个系统之间是否有共享数据的方法?任何帮助都将不胜感激。不。Neo4j是一个图形数据库,Lucene是一个反向搜索索引。它们的工作原理不同,也不能在相同的存储数据表示形式上工作。不过,复制数据是意料之中的事。即使通过数据库模式定义索引,也会导致一些数据重复
如果您不太关心复制磁盘上的数据,更关心如何保持它们的同步,那么
标签:elasticsearch Lucene
n-gram
我试图在匹配全名的文档上获得更高的分数,而不是使用相同值的Edge NGram子集
因此,结果是:
Pos Name _score _id
1 Baritone horn 7.56878 1786
2 Baritone ukulele 7.56878 2313
3 Bari 7.56878 2360
4 Baritone voice 7.56878 1787
我打算
我们有一个DotNetNuke站点,运行在两台负载平衡的服务器上。为了确保这些服务器上的文件同步,我们正在使用文件复制服务
当没有负载平衡时,搜索在DotNetNuke上可以正常工作,但在负载平衡设置中,搜索会在一段时间后停止工作(没有建议,没有结果)。
以下相关异常遍布我们的日志文件:
[D:2][T:31][ERROR] DotNetNuke.Services.Exceptions.Exceptions - Lucene.Net.Store.LockObtainFailedException
我已经看到,每次我有一个高CPU的ES问题,它总是Lucene合并线程
据我所知,段已经排序,所以每次只需合并两个排序的段,就像合并排序的合并过程一样。为什么合并会如此昂贵。还是我遗漏了什么?合并过程在IO和CPU上成本高昂的原因有两个:
Lucene使用的是跳过列表数据结构,合并它们的成本很高,有一篇关于跳过列表合并的好文章
两个并行合并可以同时发生
Lucene需要创建第三个段并合并这两个段,所以您需要足够的空间来容纳它
有一篇关于分段合并的好博文。谢谢@kaveh的回答:)
我发现了如何在Lucene.Net索引中按给定字段而不是按分数对查询结果进行排序;它所需要的只是一个已索引但未标记的字段。然而,我还没有弄清楚的是,如何在忽略诸如“a”和“the”等停止词的情况下对该字段进行排序,以便以下书名按升序进行排序,例如:
戴帽子的猫
霍顿听到了一个谁的声音
这样的事情可能发生吗?如果可能,怎么可能
我使用的是Lucene.Net 2.3.1.2。创建索引时,创建一个只包含要排序的单词的字段,然后在检索时,在该字段上排序,但显示完整标题。创建索引时,创建一个只包含要排序
优化Lucene性能的各种方法有哪些
我应该使用缓存API来存储我的lucene搜索查询,以便节省再次构建查询的开销吗?您看过了吗
欺骗。用于将整个索引加载到ram中。之后,一切都在快速燃烧 我发现,性能问题的最佳答案是对其进行分析。准则很好,但是有太多的变量会影响性能,例如数据集的大小、正在执行的查询类型、数据类型等
找一个或类似的东西,用不同的方法尝试一下。使用Mitch链接的文章,但要确保你确实测试了什么有帮助,什么(通常令人惊讶地)有伤害
与代码中的性能改进相比,从Lucene获得的
我读到Lucene有一个内部查询语言,其中一个指定:使用布尔运算符组合这些查询语言。
我在他们的网站上读到了这一切,在卢克身上效果很好,我可以这样做
field1:value1 AND field2:value2
它将返回看似正确的结果
我的问题是如何将who-Lucene查询传递到API中?我见过QueryParser,但我必须指定一个字段。这是否意味着我仍然需要手动解析输入字符串、字段、值、括号等,或者是否有办法将整个内容输入并让lucene完成它的工作
我使用的是Lucene.NET,
以下代码不会按预期的期限删除文档:
RAMDirectory idx = new RAMDirectory();
IndexWriter writer = new IndexWriter(idx,
new SnowballAnalyzer(Version.LUCENE_30, "English"),
IndexWri
我需要索引大约10GB的数据。我的每一个“文档”都很小,想想关于一个产品的基本信息,大约20个数据字段,大多数只有几个字。只有一列被索引,其余的被存储。我从文本文件中获取数据,所以这部分速度非常快
当前的索引速度仅为每小时40mb左右。我听其他人说他们比这快了100倍。对于较小的文件(大约20mb),索引速度相当快(5分钟)。然而,当我让它循环遍历我所有的数据文件(大约50个文件,总计10gb)时,随着时间的推移,索引的增长似乎慢了很多。关于如何加快索引速度,或者最佳索引速度是什么,有什么想法吗
我有一个非常直截了当的问题
我正在使用couchdb lucene搜索我文档的全文
我的每个文档都有以下字段:
_身份证
_修订版
docID(系统中文档的唯一ID)
标题(文件标题)
内容(文件正文)
userID(拥有文档的用户)
我的设计文档如下所示:
{
"_id": "_design/lucene",
"_rev": "10-770b7044393e067b7024a896ccf3c502",
"fulltext": {
"by_all": {
我目前正在实施一个Solr解决方案,用户可以选择各种选项来搜索产品。现在,我可以将所有这些选项合并到一个长查询中,也可以使用一个获取所有内容(*::*)并对其应用查询过滤器的查询
常规查询:
q=color:blue AND price:500
使用筛选器查询进行查询:
q=*:*&fq=color:blue&fq=price:500
结果完全一样。那么有什么区别呢?什么时候应该使用一个或另一个?通常,在任何生产系统中,您都会使用不支持前一种语法的Dismax请求处理程序的变
我已经阅读了lucene 4.0的文档,现在这个库存储了一些统计数据,以便计算不同的评分模型,其中一个是bm25。除了获取文档外,还有什么方法可以获取文档的长度 您可以将想要的任何内容从FieldInvertState存储到“norm”中,并且它也不必是8位浮点
默认值是长度的有损存储,如果您想要实际的精确长度,可以选择使用短(16位)的每个文档或其他内容
参见Similarity.computeNorm文档的长度是多少?字节数/代码点数/字段数?这是一个术语数,长度与计算BM25时使用的长度相
我的程序运行得太慢了,在将40000个文档插入数据库之后,我不得不中途终止它,以优化部分代码,但在调用Lucene indexwriter.close之前。然后,我找不到某些记录的任何结果,这些记录似乎仅限于该特定运行中的40000个文档
这是否意味着我在程序运行期间索引的那些记录丢失了?IndexWriter必须始终完全关闭,以便将数据写入索引
提前谢谢 你不需要打电话,但是。仅分析文档并将数据缓冲到内存中,而提交将刷新挂起的更改并执行fsync
在内部调用commit,我认为这就是为什么您假
我假设Elasticsearch中的每个碎片都是一个索引。但我在某个地方读到,每个片段都是一个Lucene索引
究竟什么是片段?它如何影响搜索性能?我每天都有450 GB左右的索引(我每天都会创建一个新的),带有默认的Elasticsearch设置
当我执行curl-XPOST“http://localhost:9200/logstash-2013.03.0$i_optimize?max_num_segments=1“,我得到
num\u committed\u segments=11和num\
我试图使用KStemmer,但它有一个私有构造函数,所以我不能显式调用它的stem方法。应该如何使用它?我相信您应该使用a,而不是直接使用词干分析器类。我相信您应该使用a,而不是直接使用词干分析器类。使用KStemFilter而不是KStemmer,因为KStemmer具有带有空访问说明符的构造函数,这意味着外部类无法访问它。请检查此链接
下面是如何在java中使用KStemFilter,请查看下面的链接
使用KStemFilter而不是KStemmer,因为KStemmer的conductor
有没有办法通过API了解a是如何被解析的?您可以通过查看来手动完成这项工作,但是如果您可以查看解析器的实际结果的一些表示,那就太好了。正如javanna在注释there's api中提到的那样。以下是我的本地elastic(1.6版)的工作原理:
pl是集群上索引的名称。不同的索引可以有不同的分析器,这就是为什么在索引的范围内执行查询验证
上述旋度的结果如下:
{
"valid" : true,
"_shards" : {
"total" : 1,
"successful
我正试图通过Sitecore ContentSearch构建一个lucene查询,其中包含一个可选术语。可选术语用于提高某些结果。lucene查询应该如下所示:
+(+(_content:myquery keywords:myquery) boostfield:boostdata)
如何构造这样的查询?使用PredicateBuilder,我只能添加和/或表达式
下面是我如何构造谓词的示例:
var contentPredicate = PredicateBuilder.Create<M
我正在寻找CQ5.6.1中lucene索引配置文件的路径。
那么它在哪里呢?将索引配置.xml文件嵌入到bundlecom.day.crx.sling.server中。要更改它,您需要从jar中提取它(见下文),复制到crx quickstart/repository/workspace/crx.default目录中,并从同一目录中引用workspace.xml文件:
<SearchIndex class="com.day.crx.query.lucene.LuceneHandler"&g
标签:elasticsearch Lucene
kibana-4
我存储了一个字符串数组字段:
[“名称1”、“名称2”、…]
我想在Kibana 4中创建一个脚本字段,返回每个文档的数组长度,并根据我找到的内容尝试使用此脚本
但是,当我尝试基于此脚本字段创建可视化时,会收到错误消息:
Request to Elasticsearch failed: {"error":"SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures
我正在使用Lucene(Umbraco)
范例
Sample DB Table with one record in it.
---------------------------------------
eventStartDate eventEndDate EventName
"23-Nov-2015" "31-Dec-2015" "test Event"
用户标准
var fromDate = "01-Dec-2015"
var toDate =
简单明了的问题:
是否可以根据搜索结果的创建顺序/日期对其进行排序?添加日期字段并按其排序是一个选项。
但是,索引已经存在,并且包含一组巨大的文档,我想对这些文档进行排序。不要使用docID进行任何操作(除了在查询后获取文档)。它不是连续的,如果您进行更新(实际上是先删除后添加),它不一定是稳定的
只需添加一个表示日期的字段,并在查询中按该字段排序即可
将其设置为数字字段,并将数字格式设置为YYYYMMDDHMMSS。如果你需要更少的精度,只需从右边删除一些数字。或者,如果您想要更好的精度,只需
我是ELK的新手,现在想知道如何仅使用Kibana中的lucene查询指定最近的数据
我试着做如下事情:
时间戳:[10分钟前到现在]
我找到了指定时间窗口的静态范围的方法,但我只想显示一个基于最近数据的动态图
谢谢你回答我自己
我找到了这个帖子。现在kibana不支持这样的查询
我有一个具有以下要求的字段:
它必须在索引时提升,因此“忽略规范”必须保持“错误”
但是,它不能受到字段长度标准化的影响(即,仅仅因为一个术语是在1:10个单词中找到的,而不是1:1000的单词中找到的,这不应该影响评分——两者的权重应该相等)
至少在另一个字段上,我确实希望字段长度标准化,因此我不怀疑在搜索器上广泛应用自定义相似性是合适的
如何在索引时增强单个字段,但禁用字段长度规范化的效果?您可以使用不同的相似性实现来实现每个字段:
public类MySimilarity扩展PerField
我们最近面临多次停机,特别是在几个小时的批量索引之后。为了避免进一步的停机,我们暂时禁用了批量索引,并添加了另一个节点。现在停机时间已经停止,但6个节点中有两个永久地留在JVM堆>80%
我们目前有一个6节点集群(以前是5个),每个集群都是EC2 c3.2xlarge,有16 GB ram,8 GB JVM堆,所有的主数据都是。我们正在使用Elasticsearch 1.5.2,它有已知的问题,如[OOM抛出合并线程](OOM抛出合并线程),我们经常遇到同样的问题
有两个主要索引经常用于搜索和a
我们有一个多方面(类型,代码,简单的颜色)的网站,我们想显示每个类别的数字
类别并不是真正的层次结构,但我们希望实现(我们不知道这样做是否真的明智)一种方法,在子选择上显示数字,而不执行使用过滤器和选择的新子查询
让我们做一个例子。
我们在主页上有以下布局:
TYPE
A (20)
B (5)
COLORS
red (10)
blue(15)
CODES
aa (10)
bb (15)
当我们选择类型A时,我们现在执行一个新的查询,以获取新配置的方面:
TYPE
A (20)
COL
在索引期间,如何在Hibernate搜索中向实体添加后缀和前缀
我需要这个来执行精确的搜索。
例如,如果正在搜索“这是一项测试”,则会找到以下条目:
*这是一个测试
*这是一个测试和
因此,我想到在索引过程中为整个值添加前缀和后缀,例如:
_____这是一个测试_____
如果一个人正在搜索“这是一个测试”,并且启用了精确搜索复选框,我会将搜索字符串更改为_
“这是一个测试”
我为此创建了一个FilterFactory,但通过它,每个术语都添加了前缀和后缀:
public boolean inc
我已经按照这里的博客条目启用了全文搜索
我已经把所有的东西都正确地设置好了,还尝试过其他人的docker图像
如何设置搜索?需要什么文件
我用一个文档创建了一个名为cats的数据库
{
"_id": "6f35d75b476517e2fc0b3eb12c000e72",
"_rev": "1-c9a6b4734c83287499e8bbd6d1339050",
"name": "tibbles"
}
以及设计/视图
{
"_id": "_design/cat_look",
标签: Lucene
lucene.netazure-cognitive-search
我在一个网站上执行搜索,有3种类型的文档产品,文章和内容产品可能处于活动状态(中止=0)或中止状态(中止=1)文章和内容的索引始终为Discontracted=0,尽管这些文档类型忽略了此信息
我想对我的查询应用boosting以获得以下排名(order),但不应用ordering子句:
活性产物
停产产品
文章
一般内容
忽略文章和内容,当我将非连续产品提升1,将活动产品提升1000(我不能使用负提升值,因为我的基础搜索系统是Azure search)时,我得到了正确的排序
我试图将产品的“c
我已经建立了一个lucene索引,并想利用它。有一个名为Luke的GUI工具,但我认为使用Kibana进行索引探索可能是一个更方便的选择。由于ElasticSearch在下面使用lucene,我认为可以将我的索引加载到其中,但我没有找到这样做的方法
我想目前还不可能,但也许有办法
谢谢
上一页 1 2 ...
49 50 51 52 53 54 55 ...
下一页 最后一页 共 78 页