Tag: 索引

使用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; […]

字符串索引超出范围:n

我每次执行它时都会遇到这个代码有点问题它给我一个错误字符串索引超出范围:’n’n – 是否。 在文本框中输入的与此代码相关的字符…(即文本框 – t2。)它停留在第一个文本框中,检查它不会转到下一个,如数组中所述。 Object c1[] = { t2.getText(), t3.getText(), t4.getText() }; String b; String f; int counter = 0; int d; for(int i =0;i<=2;i++) { b = c1[i].toString(); for(int j=0;j<=b.length();j++) { d = (int)b.charAt(j); if((d90)||(d122)) { counter++; } } } 它基本上是一个validation代码,我试图做没有例外和东西(仍在学习的过程:)) 非常感谢任何帮助。

如何在java中包含大于整数空间的列表

我在java中使用java.util.List来存储我的计算结果 如何存储大于最大整数的索引的值? (例如大)

Java使用索引逐个显示数组

我无法通过索引显示数组,我不知道为什么会这样。 任何帮助将不胜感激。 这是我的代码片段: // create token2 String token2 = “”; // create Scanner inFile2 Scanner inFile2 = new Scanner(new File (“/Users/timothylee/KeyWestHumid.txt”)). useDelimiter(“,\\s*”); // create temps2 List temps2 = new LinkedList(); // while loop while(inFile2.hasNext()){ // find next token2 = inFile2.next(); // initialize temps2 temps2.add(token2); } // close inFile2 inFile2.close(); // create array String[] tempsArray2 = […]

Array.binarySearch返回错误的数据

我正在尝试使用数组和array.BinarySearch函数validation密码和用户名。 数组中的前两个用户名:bradley和john使用函数0和1返回正确的位置。但是当我尝试validation数组jim和clarke中的最后两个字符串时,binarySearch函数返回的用户名位于数组中的位置-2两次导致validation失败。 有任何想法吗? String[] names = {“bradley”,”john”,”jim”,”clarke”}; String[] passwords = {“password”,”password”,”test”,”test”}; int pos = Arrays.binarySearch(names, uname); System.out.println(“Found you in array:” + uname + “here:” + pos); if(pos >= 0) { System.out.println(“Validation password for:” + uname); if(passwords[pos].equals(pword) && !loggedOn[pos]) { }

数组索引超出界限 – Java

我已经开始研究我的第一个Java程序,这是一个简单的计算器,但是我得到一个错误声称我的数组已经超出界限。 我试图调试它以查看其中的原因和原因,以及遵循纸上的代码,这两个代码都显示了我期望和希望的结果。 因此,我看不出问题究竟在哪里。 代码不完整。 根据调试器,错误发生在这一行: answer = outputNum.get(operationIndex) * outputNum.get(operationIndex+1); 这是我目前拥有的代码的主要部分: private class ButtonHandler implements ActionListener { /* * “outputNum” stores the numbers entered in order. * “orderOfOperations” stores all numbers in order after multiplication and division has been taken care of. * “operationList” stores the mathematical operations entered in order. * “currentNum” stores the […]

Java在数组索引中找到最后一个成员

所以说我有一个大小为10的数组,索引范围从0到9.我添加了一堆元素并在索引6处停止添加。所以对于array.length,我可以知道数组的大小是10,但是如何找到哪个索引包含最后一个值并且之后是空的? 我想做一个循环并在index == null处停止? 我通过创建一个动态数组来模仿一个arraylist,这个数组在大小满时会增长。 Arg,忘了告诉你们,如果数组是int,那么空槽将是0?

在for循环中更改索引

我可以在java中更改for循环中的索引吗? 例如: for (int j = 0; j < result_array.length; j++){ if (item==" ") { result_array[j] = "%"; result_array[j+1] = "2"; result_array[j+2] = "0"; j = j+2; } else result_array[j] = item; } 虽然它在for循环中执行j ++,但在for循环中,我也在做j = j + 3.我可以实现这个吗?

通知postgres对java应用程序的更改

问题 我正在为几十万种产品建立一个postgres数据库 。 我将设置一个索引(Solr或ElasticSearch)来改善复杂搜索查询的查询时间。 现在的重点是如何让索引与数据库同步? 在过去, 我有一种应用程序定期轮询数据库以检查应该完成的更新 ,但我会有一个过时的索引状态时间 (从数据库更新到索引更新拉动)。 我更喜欢一种解决方案,其中数据库将通知我的应用程序 (Java应用程序)数据库中的某些内容已被更改,此时应用程序将决定是否需要更新索引。 为了更准确,我将构建一种生产者和消费者结构,希望副本将从postgres接收有关更改的通知,如果这与索引的数据相关,则将其存储在待执行更新的堆栈中。 消费者将使用此堆栈并构建要存储到索引中的文档。 可能的解决方案 一种解决方案是编写一种副本端点 ,其中应用程序将表现为用于复制原始数据库中的数据的postgres实例。 有人对这种方法有一些经验吗? 我对此问题有哪些其他解决方案?