Tag: lucene

找到与Lucene匹配的开始和结束

我想从lucene(版本3.0.2 for Java)查询中找到匹配的开始和结束位置。 看起来我应该能够从Highlighter或FastVectorHighligher获取此信息,但这些类似乎只返回一个文本片段,突出显示相关文本。 有没有办法通过荧光笔或ScoreDoc本身获取此信息? 更新:我发现了这个相关的问题: 从Lucene找到搜索命中的位置 但我认为Allasso的答案对我不起作用,因为我的查询是短语,而不是个别条款。

ElasticSearch全文搜索

我尝试在弹性搜索java api上使用正则表达式运行全文搜索。 我的filter是这样的: FilterBuilder qFilter= FilterBuilders.regexpFilter(“_all”, “. *”+text+”. *”); 但它只与一个单词匹配而不是短语。 我的意思是,例如: 如果在soruce中有一个字符串,如:“ one two three four five.. ”,当我的文本字符串如下:“ two ”,“ our ”,“ thr ”……那么它就可以了。 但是当我的realTimeTextIn字符串是“ two three ”时,全文搜索不起作用。 我不能搜索一个以上的单词。 我在这里缺少什么? 其余的代码是这样的: FilterBuilder qFilter = FilterBuilders.regexpFilter(“_all”, “.*”+q+”.*”); SearchResponse response = ClientProvider.instance().getClient().prepareSearch(index) .setTypes(type) .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setPostFilter(qFilter) .setFrom(0).setSize(250).setExplain(true) .execute() .actionGet(); 谢谢你的帮助。

lucene standardanalyzer是否会删除停用词并具有词干function?

我已经使用indexWriter测试了standardanalyzer并发现它会自动删除停用词,但是,我没有添加停用词列表,因为下面的代码是我用的 StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_35); IndexWriterConfig config =new IndexWriterConfig(Version.LUCENE_35, analyzer); 默认停用词列表在哪里? 此外,这个分析仪也会自动干掉字吗?

在lucene中搜索UUID无法正常工作

我有一个UUID字段,我将按以下格式添加到我的文档中:372d325c-e01b-432f-98bd-bc4c949f15b8。 但是,当我尝试通过UUID查询文档时,无论我如何尝试转义表达式,它都不会返回它们。 例如: +uuid:372d325c-e01b-432f-98bd-bc4c949f15b8 +uuid:”372d325c-e01b-432f-98bd-bc4c949f15b8″ +uuid:372d325c\-e01b\-432f\-98bd\-bc4c949f15b8 +uuid:(372d325c-e01b-432f-98bd-bc4c949f15b8) +uuid:(“372d325c-e01b-432f-98bd-bc4c949f15b8”) 甚至使用TermQuery完全跳过QueryParser,如下所示: new TermQuery(new Term(“uuid”, uuid.toString())) 要么 new TermQuery(new Term(“uuid”, QueryParser.escape(uuid.toString()))) 这些搜索都不会返回文档,但如果我搜索UUID的某些部分,它将返回一个文档。 例如,这些将返回一些东西: +uuid:372d325c +uuid:e01b +uuid:432f 我应该怎么做索引这些文件,以便我可以通过他们的UUID拉回来? 我已经考虑重新格式化UUID以删除连字符,但我还没有实现它。

Lucene通过URL搜索

我正在存储一个包含URL字段的Document: Document doc = new Document(); doc.add(new Field(“url”, url, Field.Store.YES, Field.Index.NOT_ANALYZED)); doc.add(new Field(“text”, text, Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field(“html”, CompressionTools.compressString(html), Field.Store.YES)); 我希望能够通过其URL找到Document,但我得到0结果: Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30) Query query = new QueryParser(LUCENE_VERSION, “url”, analyzer).parse(url); IndexSearcher searcher = new IndexSearcher(index, true); TopScoreDocCollector collector = TopScoreDocCollector.create(10, true); searcher.search(query, collector); ScoreDoc[] hits = collector.topDocs().scoreDocs; // Display results for (ScoreDoc […]

Lucene 5排序问题(UninvertedReader和DocValues)

我正在使用Lucene 5.2.1内置的搜索引擎,但我在搜索排序更新选项时遇到问题。 使用Sort选项搜索时出错: 线程“main”中的exceptionjava.lang.IllegalStateException:字段’stars’的意外docvalues类型为NONE(expected = NUM​​ERIC)。 使用UninvertingReader或索引与docvalues。 在org.apache.lucene.index.DocValues.checkField(DocValues.java:208) at org.apache.lucene.index.DocValues.getNumeric(DocValues.java:227) at org.apache.lucene.search.FieldComparator $ NumericComparator.getNumericDocValues(FieldComparator.java:167) at org.apache.lucene.search.FieldComparator $ NumericComparator.doSetNextReader(FieldComparator.java:153) at org.apache.lucene.search.SimpleFieldComparator.getLeafComparator(SimpleFieldComparator.java:36) 在org.apache.lucene.search.FieldValueHitQueue.getComparators(FieldValueHitQueue.java:183) at org.apache.lucene.search.TopFieldCollector $ NonScoringCollector.getLeafCollector(TopFieldCollector.java:141) 在org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:762) 在org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:485) 在org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:694) 在org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:679) 在org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:621) 在org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:527) 在org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:577) 在SearchEngine.searchBusinessByCategory(SearchEngine.java:145) 在Tests.searchEngineTest(Tests.java:137) 在Main.main(Main.java:13) 我索引了一个文档,其中包含一个双字段“星号”,我需要用它来对搜索结果进行排序(具有最高“星号”值的文档需要在顶部)。 Document doc = new Document(); doc.add(new DoubleField(“stars”, stars, Store.YES)); 然后我在“stars”字段上实现了带有Sort选项的Search命令,如下所示: SortField sortfield = new SortField(“stars”, SortField.Type.DOUBLE, true); Sort sort […]

是否可以从JRuby创建Java类并在Java中使用它们?

我试图从JRuby扩展Lucene的Analyzer并从java中使用它。 一个简单的分析器看起来像: class MyAnalyzer < Java::OrgApacheLuceneAnalysis::Analyzer def TokenStream (file_name, reader) result = StandardTokenizer.new(Version::LUCENE_CURRENT, reader) result = LowerCaseFilter.new(result) result = LengthFilter.new(result, 3, 50) result = StopFilter.new(result, StandardAnalyzer.STOP_WORDS_SET) result = PorterStemFilter.new(result) result end end 然后我编译它: jrubyc -c /home/camilo/trunk/utils/target/dependency/lucene-core-3.0.2.jar –javac MyAnalyzer.rb并将其打包为jar。 现在,当尝试在java中使用MyAnalyzer , MyAnalyzer是org.jruby.RubyObject的后代,而不是org.apache.lucene.analysis.Analyzer的后代。 有没有办法让Java将MyAnalyzer视为Analyzer而不是RubyObject ? 或者这是否超出了JRuby现在可以做的范围? JRuby版本: jruby 1.6.0 (ruby 1.8.7 patchlevel 330)

将Document添加到索引后忘记关闭Lucene IndexWriter

我有一个程序运行2天来为大约1.6亿个文本文件构建一个Lucene索引,在程序结束后,我尝试搜索索引并发现索引没有正确构建,indexReader.numDocs()返回0.我检查过索引目录,看起来不错,所有的索引数据似乎都在那里,目录的大小是1.5千兆字节。 我检查了我的代码,发现我忘了调用indexWriter.optimize()和indexWriter.close(),我想知道是否有可能重新优化()索引,所以我不需要重建整个索引从头开始? 我真的不希望该计划再花2天时间。

如何在Lucene中实现tf-idf和余弦相似度?

如何在Lucene中实现tf-idf和余弦相似度? 我正在使用Lucene 4.2。 我创建的程序不使用tf-idf和Cosine相似,它只使用TopScoreDocCollector。 import com.mysql.jdbc.Statement; import java.io.BufferedReader; import java.io.File; import java.io.InputStreamReader; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.util.Version; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.index.IndexWriter; import java.sql.DriverManager; import java.sql.Connection; import java.sql.ResultSet; import org.apache.lucene.analysis.id.IndonesianAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.*; import org.apache.lucene.queryparser.classic.ParseException; import org.apache.lucene.queryparser.classic.QueryParser; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopScoreDocCollector; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.store.RAMDirectory; public class IndexMysqlDBStemming […]

Elasticsearch提高了查询性能

我正在尝试提高查询性能。 对于甚至没有触及嵌套文档的简单查询,平均需要大约3秒,并且有时更长。 curl “http://searchbox:9200/global/user/_search?n=0&sort=influence:asc&q=user.name:Bill%20Smith” 即使没有那种,它需要几秒钟。 以下是群集的详细信息: 1.4TB index size. 210m documents that aren’t nested (About 10kb each) 500m documents in total. (nested documents are small: 2-5 fields). About 128 segments per node. 3 nodes, m2.4xlarge (-Xmx set to 40g, machine memory is 60g) 3 shards. Index is on amazon EBS volumes. Replication 0 (have tried […]