Tag: lucene

Solr:结合EdgeNGramFilterFactory和NGramFilterFactory

我有一种情况需要使用EdgeNGramFilterFactory和NGramFilterFactory。 我正在使用NGramFilterFactory来执行“包含”样式搜索,最小字符数为2.我还想搜索第一个字母,例如带有前EdgeNGramFilterFactory的“startswith”。 我不想将NGramFilterFactory降低到最小字符1,因为我不想索引所有字符。 一些帮助将不胜感激 干杯

Tokenize,使用Lucene和Java删除停用词

我试图用Lucene标记并删除txt文件中的停用词。 我有这个: public String removeStopWords(String string) throws IOException { Set stopWords = new HashSet(); stopWords.add(“a”); stopWords.add(“an”); stopWords.add(“I”); stopWords.add(“the”); TokenStream tokenStream = new StandardTokenizer(Version.LUCENE_43, new StringReader(string)); tokenStream = new StopFilter(Version.LUCENE_43, tokenStream, stopWords); StringBuilder sb = new StringBuilder(); CharTermAttribute token = tokenStream.getAttribute(CharTermAttribute.class); while (tokenStream.incrementToken()) { if (sb.length() > 0) { sb.append(” “); } sb.append(token.toString()); System.out.println(sb); } return […]

Lucene中的索引和搜索日期

我尝试用DateTools.dateToString()方法索引日期。 它适用于索引和搜索。 但是我已经索引的数据有一些引用,它将Date作为一个新的Date().getTime()索引。 所以我的问题是如何对这些数据执行RangeSearch Query … 任何解决方案??? 提前致谢。

Lucene作为数据存储

是否可以将Lucene用作完整的数据存储(就像其他(mongo,couch)nosql变体一样)。 我知道有一些限制,比如一个索引器的新更新文档不会在其他索引器中显示。 所以我们需要重新启动索引器才能获得更新。 但我最近偶然发现了solr ,似乎某些快照复制可以避免这些问题。 所以我认为我可以使用lucene作为数据存储,因为它还使用mongo和couch内部用于管理文档的相同类型的文档(基于JSON),并且其经过validation的索引算法可以超快速地获取记录。 但我很好奇有没有人尝过这个…? 如果没有选择这种方法的原因是什么。

使用Solr索引多种语言

我们正在建立一个Solr来索引文档,其中title字段可以是各种语言。 谷歌搜索后,我发现了两个选项: 为每种语言定义不同的模式字段,即title_en,title_fr,…对每种语言应用不同的filter,然后使用相应的语言查询其中一个标题字段。 创建不同的Solr核心来处理每种语言并使我们的应用程序查询正确的Solr核心。 哪一个更好? 有什么起伏? 谢谢

使用solr构建标签云

亲爱的stackoverflow社区: 鉴于一些文本,我希望在文本中获得前50个最常用的单词,并从中创建一个标签云,从而以图形方式显示文本的主要内容。 该文本实际上是一组100左右的评论PER每个ITEM(一张图片)有大约120个项目,我还希望保持云更新 – 通过保持评论索引,并使用云生成代码每次运行新的网络请求出现了。 我决定使用Solr索引文本,现在想知道如何从Solr TermsVectorComponant中获得前50个单词。 以下是术语矢量组件返回的结果示例,在您通过说tv.tf=”true”打开术语频率后: MA147LL/A 5 3 10 11 3007WFP 5 4 如你所见,我有两个问题: 我获得了该文档中的所有条款,不仅仅是前100名 并且它们没有按频率排序,因此我必须得到术语并将其排序在内存中以执行即时尝试。 有没有更好的办法? (或者)我可以告诉solr termvector组件以某种方式对它进行排序并为我提取100个吗? (或)我可以使用其他一些框架吗? 我需要保留新的评论标记,因此标签云始终是最新的 – 对于云生成器,它需要一个加权单词的字典,并使其成为一个很好的图像。 这个答案没有帮助。 编辑 – 尝试jpountz和paige厨师的答案 这是我为此查询得到的结果: select?q=Id:d4439543-afd4-42fb-978a-b72eab0c07f9&facet=true &facet.field=Post_Content&facet.minCount=1&facet.limit=50 1 1 1 1 1 1 1 1 1 1 1 1 1 1 我有50个这样的元素,@ jpountz感谢帮助限制结果,但为什么单个元素的所有FIFTY都保持值1 ? 我的想法是:数字1表示与我的查询匹配的文档的数量(自我通过Id:Guid查询后,它只能是一个)并且它们不代表Post_Content单词的频率 为了certificate这一点,我从查询中删除了Id:GUID,结果是: 33 17 16 […]

Lucene的Ruby替代品

我听说过Lucene很多,它是Java中最好的搜索引擎库之一。 Ruby有没有类似的(强大的)库?

Elasticsearch服务器发现配置

我安装了ElasticSearch服务器,我正在运行: $ ./elasticsearch -f {0.18.2}[11698]: initializing … loaded [], sites [] {0.18.2}[11698]: initialized {0.18.2}[11698]: starting … bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.1.106:9300]} new_master [Stingray][ocw4qPdmSfWuD9pUxHoN1Q][inet[/192.168.1.106:9300]], reason: zen-disco-join (elected_as_master) elasticsearch/ocw4qPdmSfWuD9pUxHoN1Q recovered [0] indices into cluster_state bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.1.106:9200]} {0.18.2}[11698]: started 如何配置Java客户端连接到此服务器? 我刚才: node.client=true 但是,在尝试连接之后我收到了: org.elasticsearch.discovery.MasterNotDiscoveredException: at org.elasticsearch.action.support.master.TransportMasterNodeOperationAction$3.onTimeout(TransportMasterNodeOperationAction.java:162) 如果我将java客户端配置为: node.data=false 我得到以下日志: INFO main node:internalInfo:93 – [Stark, Tony] {0.18.2}[13008]: starting […]

使用Apache Lucene索引MySQL数据库,并使它们保持同步

在MySQL中添加新项目时,它必须也由Lucene编制索引。 当从MySQL中删除现有项时,它也必须从Lucene的索引中删除。 我们的想法是编写一个脚本,通过调度程序每隔x分钟调用一次(例如CRON任务)。 这是一种保持MySQL和Lucene同步的方法。 直到我还管理的内容: 对于MySQL中每个新添加的项目,Lucene也将其编入索引。 对于MySQL中每个已经添加的项目,Lucene不会重新索引它(没有重复的项目)。 这是我要求你帮助管理的一点: 对于之前已经从MySQL中删除的每个项目,Lucene也应该取消索引。 这是我使用的代码,它试图索引MySQL表tag (id [PK] | name) : public static void main(String[] args) throws Exception { Class.forName(“com.mysql.jdbc.Driver”).newInstance(); Connection connection = DriverManager.getConnection(“jdbc:mysql://localhost/mydb”, “root”, “”); StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36); IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36, analyzer); IndexWriter writer = new IndexWriter(FSDirectory.open(INDEX_DIR), config); String query = “SELECT id, name FROM tag”; […]

使用lucene改进multithreading索引

我试图在Lucene中使用多个线程构建索引。 所以,我开始编写代码并编写了以下代码。 首先,我找到文件,并为每个文件,我创建一个索引它的线程。 之后,我加入线程并优化索引。 它有效,但我不确定……我可以大规模信任它吗? 有没有办法改善它? import java.io.File; import java.io.FileFilter; import java.io.FileReader; import java.io.IOException; import java.io.File; import java.io.FileReader; import java.io.BufferedReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.document.Field; import org.apache.lucene.document.Document; import org.apache.lucene.store.RAMDirectory; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.analysis.StopAnalyzer; import org.apache.lucene.index.IndexReader; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version; import org.apache.lucene.index.TermFreqVector; public class mIndexer extends Thread { private File ifile; private static IndexWriter writer; […]