Tag: 搜索

elasticsearch – 返回字段的标记

如何在结果中返回特定字段的标记 例如,A GET请求 curl -XGET ‘http://localhost:9200/twitter/tweet/1′ 回报 { “_index” : “twitter”, “_type” : “tweet”, “_id” : “1”, “_source” : { “user” : “kimchy”, “postDate” : “2009-11-15T14:12:12”, “message” : “trying out Elastic Search” } } 我想在结果中包含’_source.message’字段的标记

Android辅助搜索:搜索按钮不会调用可搜索的活动(其他解决方案没有帮助)

我写了这个小测试应用程序来演示问题,即当用户按下键盘上的搜索按钮时,没有启动可搜索的活动。 我一直在关注开发者指南 ,但是从我的网络搜索来看,事实certificate官方开发者指南错过了一些观点。 从我的SO搜索(没有帮助): 参考1:通过在清单中的元素中添加标记来解决。 我还查看了“用户词典”样本的清单(我不知道在哪里可以找到在线样本,或者我会链接到它)。 该标记位于application元素中。 参考2: res / xml / searchable.xml中的“android:label”和“android:hint”必须是对字符串资源的引用,而不是硬编码字符串。 我的是。 参考3:在活动的清单中添加一个带有“android:name =”android.app.default_searchable“”(和“android:value =”“”)的标签,搜索是将要发起。 试过这个,似乎没有用。 参考文献4: “您的可搜索活动必须做某事 – 并实际显示结果。” 我的确如此,它通过ACTION_SEARCH操作接收意图,并将从intent获取的搜索查询字符串传递给名为“performSearch(string)”的方法,该方法在textview中显示字符串。 那么我做错了什么,我该怎么做才能解决这个问题呢? 代码: MainActivity.java – 具有单个SearchView – 用户输入查询并按下键盘上的“搜索”按钮。 public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } TestTwoActivity.java public class TestTwoActivity extends Activity { TextView tv; […]

什么是Java中最快的子字符串搜索方法

我需要实现一种使用Java搜索字符串(haystack)列表中的子字符串(针)的方法。 更具体地说,我的应用程序有一个用户配置文件列表。 如果我输入一些字母,例如“Ja”,然后搜索,则所有名称中包含“ja”的用户都应该显示。 例如,结果可能是“Jack”,“Jackson”,“Jason”,“Dijafu”。 在Java中,据我所知,有3种内置方法可以在字符串中查看搜索子字符串。 string.contains() string.indexOf() 正则表达式。 它就像string.matches(“ja”)) 我的问题是:上面每种方法的运行时间是多少? 哪一个是检查字符串列表是否包含给定子字符串的最快或最有效或最流行的方法。 我知道存在一些做同样事情的算法,例如Boyer-Moore字符串搜索算法,Knuth-Morris-Pratt算法等等。 我不想使用它们,因为我只有一小串字符串,我认为使用它们对我来说有点矫枉过正。 此外,我必须为这种非内置算法输入许多额外的编码。 如果您认为我的想法不正确,请随时纠正我。

从Lucene找到搜索命中的位置

使用Lucene,在搜索结果中找到匹配的推荐方法是什么? 更具体地说,假设索引文档具有字段“fullText”,其存储某些文档的纯文本内容。 此外,假设对于这些文件中的一个,内容是“快速的棕色狐狸跳过懒狗”。 接下来,搜索“狐狸狗”。 显然,这份文件很受欢迎。 在这种情况下,Lucene可以用来提供类似于找到的文档的匹配区域吗? 所以对于这种情况,我想产生类似的东西: [{match: “fox”, startIndex: 10, length: 3}, {match: “dog”, startIndex: 34, length: 3}] 我怀疑它可以通过org.apache.lucene.search.highlight包中提供的内容来实现。 我不确定整体方法……

在java ArrayList中搜索

我正在尝试找出通过其ID号在ArrayList搜索客户的最佳方法。 以下代码无效; 编译器告诉我,我错过了一个return语句。 Customer findCustomerByid(int id){ boolean exist=false; if(this.customers.isEmpty()) { return null; } for(int i=0;i<this.customers.size();i++) { if(this.customers.get(i).getId() == id) { exist=true; break; } if(exist) { return this.customers.get(id); } else { return this.customers.get(id); } } } //the customer class is something like that public class Customer { //attributes int id; int tel; String fname; String lname; […]

范围交叉算法优于O(n)?

范围交叉是一个简单但非平凡的问题。 已经回答了两次: 查找数字范围交叉点 比较日期范围 第一个解决方案是O(n),第二个解决方案是数据库(当然小于O(n))。 我有同样的问题,但对于一个大的n,我不在数据库中。 这个问题似乎与存储2D点非常相似, 可以快速检索矩形内的那些,但我看不到它是如何映射的。 那么你将数据结构存储在哪个数据结构中,以便搜索范围的成本低于O(n)? (使用可用于Java的库的额外功劳) 编辑: 我想获得所有相交范围的子集,这意味着搜索范围可以与多个范围相交。 在Java中需要小于O(n)的方法是: public class RangeSet { …. public Set intersects(Range range); …. } 其中Range只是一个包含一对int start和end的类。 这不是一个不可能的问题,我已经有了解决方案,我只是想看看是否有更标准/更简单的方法

Lucene:多词短语作为搜索词

我正在尝试使用Apache Lucene创建一个可搜索的电话/本地商业目录。 我有街道名称,公司名称,电话号码等字段。我遇到的问题是,当我尝试在街道上搜索街道名称有多个单词(例如“新月”)时,不会返回任何结果。 但如果我尝试用一​​个单词搜索,例如’新月’,我会得到我想要的所有结果。 我正在使用以下内容索引数据: String LocationOfDirectory = “C:\\dir\\index”; StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_34); Directory Index = new SimpleFSDirectory(LocationOfDirectory); IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE.34, analyzer); IndexWriter w = new IndexWriter(index, config); Document doc = new Document(); doc.add(new Field(“Street”, “the crescent”, Field.Store.YES, Field.Index.Analyzed); w.add(doc); w.close(); 我的搜索工作如下: int numberOfHits = 200; String LocationOfDirectory = “C:\\dir\\index”; TopScoreDocCollector collector […]

如何在Java对象列表中搜索

我有一个对象列表,列表非常大。 对象是 class Sample { String value1; String value2; String value3; String value4; String value5; } 现在我必须在列表中搜索对象的特定值。 假设value3==’three’我必须返回那些对象(我的搜索并不总是基于value3) 清单是 List list = new ArrayList(); 这样做的有效方法是什么? 谢谢。

在对象中实现二进制搜索

有没有办法在带有对象的ArrayList中实现二进制搜索? 在此示例中,ArrayList将使用字段“id”进行排序。 class User{ public int id; public string name; } ArrayList users = new ArrayList(); sortById(users); int id = 66 User searchuser = getUserById(users,id); 如果我应该使用二进制搜索返回具有指定id的用户,那么“User getUserById(ArrayList users,int userid)”如何? 这有可能吗?

Java – 搜索目录中的文件

这应该是简单的,但我无法得到它 – “编写一个程序来搜索给定目录中的特定文件名。” 我找到了一些硬编码文件名和目录的例子,但是我需要用户输入的dir和文件名。 public static void main(String[] args) { String fileName = args[0]; // For the filename declaration String directory; boolean found; File dir = new File(directory); File[] matchingFiles = dir.listFiles(new FilenameFilter() { public boolean accept(File dir, String fileName) { return true; } }); }